Недавно я наткнулся на видео на YouTube, объясняющее игру в казино. Проще говоря, они случайным образом генерируют множитель для ваших первоначальных инвестиций. Этот множитель должен быть подкреплен хеш-значением. Казино также предоставляет клиенту начальное хеш-значение первой игры и хеш-значение каждого последующего броска множителя.
Клиент должен проверить случайно сгенерированный хэш, применив его к следующей функции Python:
защита get_prev_game (хэш_код):
m = hashlib.sha256()
m.update(hash_code.encode("utf-8"))
вернуть m.hexdigest()
Ввод полученного хэша в эту функцию снова и снова, конечно же, должен привести к заданному начальному игровому хэшу.
Теперь мой вопрос: так как это get_prev_game
Функция в основном хеширует хеш-значение снова и снова, пока не достигнет первого хеш-значения, мне действительно интересно, как создается следующее хеш-значение на стороне казино? Не означает ли это, что им придется создать новый хэш, который совпадает с хэшем предыдущего? Я думал, что это должно быть очень трудно решить проблему.
Может быть, я что-то упускаю.
Спасибо за любое объяснение заранее!
PS: я не знаю, разрешено ли мне публиковать видео на YouTube, но это /watch?v=F1HA7e3acSI
Редактировать:
Добавляю функцию расчета множителя. Статистически очевидно, что в этой игре нельзя выиграть. Меня больше интересует, как они генерируют новые хэши и как работает откат предыдущих хэшей.
защита get_result (game_hash):
hm = hmac.new(str.encode(game_hash), b'', hashlib.sha256)
хм.обновление(соль.кодировать("utf-8"))
h = hm.hexdigest()
если (int(h, 16) % 33 == 0):
вернуть 1
ч = интервал (ч [: 13], 16)
е = 2**52
return (((100 * e - h) / (e-h)) // 1) / 100.0