Алгоритм превращения штрих-кодов в игровые объекты (монстров, предметы и т. Д.) - PullRequest
0 голосов
/ 30 апреля 2011

Я собираюсь написать игру, которая превращает штрих-коды в игровые предметы (например, монстров, предметы, навыки и так далее).Очень похоже на старую игру «Barcode Battler».

К сожалению, я не очень талантлив в математике.Что мне нужно, так это некоторые подсказки, как я мог бы разработать алгоритм, чтобы «анализировать» некоторые характеристики из штрих-кодов (например, точки атаки, точки попадания, ...), не делая их предсказуемыми.

Итак, допустим, у меня есть это8-значный штрих-код: 12345678

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

Итак, у кого-нибудь есть идеи, как мне начать здесь?

1 Ответ

1 голос
/ 30 апреля 2011

Дайджест хеша MD5 составляет 128 битов, поэтому существует 2 ^ 128 возможных хешей или 340 282 366 920 938 463 463 374 607 431 768 211 456 (3.402823669e + 38) возможных хешей.

Штрих-коды имеют 12 десятичных цифр, но одна из них является контрольной суммой, поэтому мы можем ее игнорировать. Существует 10 ^ 11 возможных штрих-кодов или 100 000 000 000 (100 миллиардов) возможных.

Согласно этой странице: http://www.iusmentis.com/technology/encryption/pgp/pgpattackfaq/hash/#bruteforcemd5, вам нужно будет попробовать хотя бы 2 ^ 64 хэша, прежде чем вы столкнетесь с коллизией на MD5, что означает невероятные шансы, что вы получите столкновение с использованием только набора штрих-кодов.

Преимущество использования MD5 по сравнению с простым использованием битов в штрих-коде состоит в том, что для данной компании первая часть штрих-кода всегда будет одинаковой, и вам придется учитывать это, или вы в конечном итоге получите данная компания, производящая аналогичные товары.

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

Единственный способ узнать это - экспериментировать.

...