Азартные игры на предметы из CS:GO стали довольно популярны. Выглядят они довольно просто и заманчиво: ставишь свои предметы, выигрываешь (или нет) еще больше. Все хотят халявы. Но есть одно Но - это честность сайта.

Рассмотрим общепринятый способ доказательства честности.

MD5

https://ru.wikipedia.org/wiki/MD5

До начала игры сайт генерирует случайное число от 0 до 1 и публикует его хеш. Игроки делают ставки, получая билеты, например по 100 за каждый внесенный $1. Номер выигрышного билета определяется по формуле случайное число * банк = номер билета.
После определения победителя сайт публикует еще один хеш md5(хеш случайного числа + банк).

На сайте приводят калькулятор, чтобы вставить полученные значения и убедиться в честности.

Но это полный бред.
Нам не дали само случайное число и оно может быть сгенерировано сайтом уже после игры. При этом выигрышный билет будет выбран для фейковой ставки сайта.

На многих сайтах все же публикуется случайное число после окончания игры. Тогда мы можем сгенерировать хеш и проверить, что
md5(случайное число) = хеш случайного числа.

Но с этим тоже есть проблемы.
Во-первых, можно разместить несколько фейковых ставок по всей длине банка, при этом сайт влияет на md5(хеш случайного числа + банк).

Во-вторых, md5 давно признан небезопасным алгоритмом хеширования и рекомендуют отказаться от его использования. Все дело в коллизиях.

Для нескольких случайных чисел может быть один и тот же хеш.
Это дает теоретическую возможность выбрать наиболее выгодный для сайта номер выигрышного билета.

Для устранения эффекта коллизий может использоваться “соль”.
Это строка случайных символов, добавляемых при генерации хеша, например md5(случайной число + ‘sflprt49fhi2’).
Теоретически это повышает устойчивость хеша, но опять же, сайт может заранее сгенерировать наборы случайных чисел с солью и выбирать подходящие. Затратно в вычислительном плане, но возможно.

SHA-2

https://ru.wikipedia.org/wiki/SHA-2

Это довольно надежный алгоритм. Криптографическая сложность семейства SHA-2 делает нахождение коллизий очень затруднительным.

RANDOM.ORG

https://www.random.org/

Бывают сайты, выбирающие случайный номер выигрышного билета с помощью сайта random.org. При этом на random.org доступна информация по каждой игре.

random.org verify data

Например, в этой игре выиграл 37 номер билета из 47. Ты можешь проверить кому принадлежал билет, сколько их всего было и время генерации. Отличие этого способа в том, что сайт никак не может повлиять на результаты выбора победителя. Это делает random.org, который даже не знает для чего он выбирает случайные числа.

Кстати, его генератор случайных чисел является аппаратным и зависит от нелинейных случайных параметров окружающей среды, что делает числа еще более случайными.

В любом случае, честность игры зависит не только от технических средств проверки, но и от честности владельцев сайта.
И чаще всего усилия, необходимые для подкрутки результатов не окупятся, поэтому она не нужна.

Так что если ты проиграл, особенно с большим процентом, - не следует сразу кричать и истерить, что тебя обманули. Скорее всего тебе просто не повезло, ведь выиграть может каждый участник.