Удобочитаемый GUID - PullRequest
       49

Удобочитаемый GUID

10 голосов
/ 18 декабря 2009

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

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

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

Если я использую GUID, меня беспокоит пункт 1. Если я использую возрастающее целое число, меня беспокоит пункт 2. Между ними должен быть какой-то счастливый посредник, верно? Я подумал, что, возможно, эта работа уже выполнена, и меня ждет идеальное решение. В отсутствие этого я думаю, что я пойду со случайной буквенно-цифровой строкой или, возможно, только буквами (исключая I и O для ясности), и получу IP-адреса блока приложения, которые не пройдут X раз, что указывало бы возможная атака грубой силы. Если бы я пошел с этим, сколько длины строки и какое значение X будет работать и почему?

Спасибо за вашу помощь!


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

Ответы [ 12 ]

1 голос
/ 18 декабря 2009

Одним из простых решений является вызов метода getHashCode, который есть у большинства языков для строковых типов. Установите строку для некоторого слова из вашего списка утвержденных слов. Затем вызовите gethashcode, и это будет ваш ключ. Чтобы проверить это, сравните его со списком существующих хэшей слов и, возможно, удалите его из списка, чтобы его нельзя было использовать снова.

0 голосов
/ 18 декабря 2009

вы можете попробовать что-то вроде генератор случайных буквенных последовательностей? . Вы можете смешивать и сочетать буквы / цифры, а также

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...