<?php
$choices = array(
'2' => '1',
'1' => '3',
'3' => '2'
);
while ( true ) {
$computer_move = $choices[array_rand($choices)];
do {
echo("1 - Rock \n2 - Paper \n3 - Scissors\n0 - exit \nComputer has made a move. HMACSHA256 proof: "
);
echo hash_hmac('sha256','$computer_move');
echo("\nYour Move: ");
$human_move = strtolower(trim(fgets(STDIN)));
echo("\nComputer's move was: $computer_move\n");
//????????????????????
} while (!in_array($human_move, $choices));
// calculate winner
if ($human_move == $computer_move) {
echo("\nTie, Replay!\n");
} else if ($choices[$human_move] == $computer_move) {
echo("\nYou Win!\n");
break;
} else if ($choices[$computer_move] == $human_move) {
echo("\nComputer Wins!\n");
break;
}
}
Всем Привет. Имеется игра в камень-ножницы-бумага. Необходимо сгенерировать хэш-код HMAC sha256 с (моей точки зрения) помощью hash() либо hash_hmac().
До хода пользователя компьютер уже принимает решение (то есть выбирает через SecureRandom(не в пэхе) один из вариантов камень/ножницы...) и выводит на экран результат работы хэш-функции. После пользователь выбирает так же один вариант из камень/ножницы и т.д. Только после этого компьютер выводит значение ключа, который использовался для подсчета этой хэш-функции. Взяв этот ключ и значение, которое вывел компьютер (камень/ножницы...) и передав их снова в хэш-функцию можно удостовериться, что она идентична той, что вывел компьютер до хода пользователя.
Подскажите пожалйста, как решить это дело и как можно сгенерировать ключ.
Используйте функцию hash_hmac
вместе с sha256
, пояснение: $string
- ваша строка для хэширования, $secret
- общий секретный ключ для генерации HMAC хэш-кода.
$generate = hash_hmac('sha256', $string, $secret);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Нужно найти максимум и минимум функции при 3 параметрахПри первых 2х выводится правильно, в 3 почему-то появляются другие числа
Как создать таймер в C++? Пробовал SetTimer с USER_TIMER_MINIMUM но он медленный, нужен таймер с интервалом больше 60 раз в секунду
Правильно ли я понимаю, что метод std::vector::emplace_back() вызывает конструктор, но не конструктор перемещения?