Генерация уникального цифового кода

  • Автор темы Автор темы Frutik
  • Дата начала Дата начала

Frutik

1024-й
Генерация уникального цифового кода

Нужно сгенерировать цифровые коды пополнения как у мобильных операторов

В общем виде мне это представляется както так:

1. сгенерировать рандомное чтото
2. специальной хеш-функцией обработать это чтото
3. проверить результат из пункта 2 на уникальность и внести в базу

Вопросы:

- как правильно подойти к решению проблемы
- что почитать для грамотной реализации пункта 2. ключевые слова для гугла
- существуют ли стандартные крипто алгоритмы выдающие хеши в виде цифровой последовательности определенной длины
 
тоесть ты думаеш мобильные операторы именно так и делают? :-)
 
Вообще без понятия, как делают мобильные операторы, но md5 генерит хэш-функцию, о чем ты и спрашивал.
 
На мой взгляд, подход вполне логичный. Особенно если при вводе кода на страничке добавить защиту от подбора методом кода подтверждения или временной паузы между двумя последовательными попытками ввода.
 
зачем "рандомное что-то" прогонять через хэш-функцию - мне вообще непонятно. А скорее даже так: я считаю, что тут хэш-функция не нужна. А нужно генерить рандомом по всей ОДЗ.
 
спасибо. я услышал ваше мнение :)

-~{}~ 07.06.08 13:59:

Автор оригинала: Wicked
зачем "рандомное что-то" прогонять через хэш-функцию - мне вообще непонятно. А скорее даже так: я считаю, что тут хэш-функция не нужна. А нужно генерить рандомом по всей ОДЗ.
тоесть вы считаете если мне нада примером 100 тысяч кодов то достаточно просто сгенерировать их рандомно по одз от 0 до, скажем, много миллиардов?

вопрос скорее в том можна ли сделать так чтобы не каждое число из этого диапазона было валидным
 
используй md5 + microtime , а потом проверяй.

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

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

-~{}~ 07.06.08 18:23:

меня конечно больше заинтересовал вопрос, возможно ли создать уникальный хэш без проверок с моментом времени стремящимся к 0
м?
 
чего -то сложно такую задачу сформулировать, надо порыть в инет )))
 
Wicked что в таком случае продают разнообразные продавцы "генераторов кодов пополнения" ну не реализацию же рандомайзера

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

только ли закон больших чисел и технический контроль (лочка карточки) спасают мобильщиков от мошенников
 
Автор оригинала: Frutik
вопрос скорее в том можна ли сделать так чтобы не каждое число из этого диапазона было валидным
добавляй в конец какую-нибудь контрольную сумму
 
Автор оригинала: zerkms
это лохотрон
точно, я даже раскажу какой именно - покупаются легальные карточки, прописываются в "генератор" и клиенту для демо они показываются, он их проверяет, радуется и становится лохом :D
 
dimagolov
гхм, а мне показалось что фрутик говорит о продаваемых (по крайней мере раньше в спаме они встречались) программах, которые генерят номера пополнения. собственно это было лохотроном.
 
да-да, и именно как dimagolov говорит - первые 5-8 кодов были корректными.
как машинка для печати денег :D
 
ТС, извините конечно, но чем вы думаете? =)
abs(crc32(microtime())) или md5(microtime()) - и вперёд.
Если генерировать в 1 поток, то коллизии не будет. Если во много потоков, то вероятность всё же присутствует, хотя и мизерная и ее можно не учитывать.
и фпоиск по "guid".
И не надо генерировать абстрактные коды... их надо хранить в БД.
 
Сверху