Я пытаюсь создать уникальный CD-KEY, чтобы вставить его в коробку с нашим продуктом, точно так же, как обычный CD-KEY, находящийся в стандартных коробках программного обеспечения, которые пользователи используют для регистрации продукта.
Однако мы не продаем программное обеспечение, мы продаем набор для сбора ДНК для криминальных и медицинских целей. Пользователи получат по почте комплект для сбора слюны с CD-KEY, и они будут использовать этот CD-KEY, чтобы создать учетную запись на нашем веб-сайте и получить свои результаты. Результаты теста будут связаны с CD-KEY. Это единственный способ связать результаты с пациентами. Поэтому важно, чтобы он не провалился:)
Одним из требований было бы то, что список CD-KEY должен быть достаточно «раздвинут», чтобы исключить возможность того, что кто-то введет неправильный CD-KEY и все же одобрит его для другого комплекта, перепутав тем самым два комплекта. Это может стоить нам тысячи долларов в качестве ответственности.
Например, это не может быть последовательная последовательность чисел, например,
00001
00002
00003
...
Причина в том, что если кто-то получит комплект 00002, но зарегистрирует его как 000003 случайно, его результаты будут сопоставлены с кем-то еще. Так что это должно быть похоже на номера кредитных карт ... Если не введена правильная последовательность, ваши шансы случайного попадания в действительное число равны 1 на миллион ...
Кроме того, мы ежегодно продаем более 50 000 комплектов различным поставщикам (которые будут генерировать свои собственные CD-KEYS с использованием нашего алгоритма), поэтому мы не можем поддерживать список всех ранее выпущенных CD-KEYS для проверки на дубликат. Алгоритм должен генерировать уникальные CD-ключи.
Нам также требуется возможность проверки правильности CD-KEY с помощью алгоритма быстрой проверки, чтобы мы могли информировать пользователя о том, что введенный им код является недействительным. Это оставляет много алгоритмов хеширования или MD5, я верю. И это не может быть 128 бит, потому что, кто бы потратил это время, чтобы напечатать его на экране компьютера?
До сих пор я думал, что окончательная структура CD-KEY будет выглядеть
(Код продукта из 4 символов) - (код посредника из 4 символов) - (уникальный ключ для проверки на 12 символов, проверяемый CD-ключ)
Ex. 384A - GTLD - {4565 - FR54 - EDF3}
Чтобы обеспечить уникальность KEYS, я мог бы включить текущую дату (20090521) в качестве части источника. Мы не будем генерировать уникальные ключи чаще, чем раз в неделю, поэтому это значение меняется достаточно часто с целью получения уникального начального значения.
Какой возможный алгоритм я могу использовать для генерации уникальных ключей?