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

Frutik

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

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

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

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

Вопросы:

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

Frutik

1024-й
тоесть ты думаеш мобильные операторы именно так и делают? :)
 

agx

Программер :-)
Вообще без понятия, как делают мобильные операторы, но md5 генерит хэш-функцию, о чем ты и спрашивал.
 

agx

Программер :-)
На мой взгляд, подход вполне логичный. Особенно если при вводе кода на страничке добавить защиту от подбора методом кода подтверждения или временной паузы между двумя последовательными попытками ввода.
 

Wicked

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

Frutik

1024-й
спасибо. я услышал ваше мнение :)

-~{}~ 07.06.08 13:59:

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

вопрос скорее в том можна ли сделать так чтобы не каждое число из этого диапазона было валидным
 

nirex

Новичок
используй md5 + microtime , а потом проверяй.

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

Wicked

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

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

-~{}~ 07.06.08 18:23:

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

nirex

Новичок
чего -то сложно такую задачу сформулировать, надо порыть в инет )))
 

Frutik

1024-й
Wicked что в таком случае продают разнообразные продавцы "генераторов кодов пополнения" ну не реализацию же рандомайзера

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

только ли закон больших чисел и технический контроль (лочка карточки) спасают мобильщиков от мошенников
 

Beavis

Banned
Автор оригинала: Frutik
вопрос скорее в том можна ли сделать так чтобы не каждое число из этого диапазона было валидным
добавляй в конец какую-нибудь контрольную сумму
 

zerkms

TDD infected
Команда форума
Wicked что в таком случае продают разнообразные продавцы "генераторов кодов пополнения" ну не реализацию же рандомайзера
это лохотрон
 

dimagolov

Новичок
Автор оригинала: zerkms
это лохотрон
точно, я даже раскажу какой именно - покупаются легальные карточки, прописываются в "генератор" и клиенту для демо они показываются, он их проверяет, радуется и становится лохом :D
 

zerkms

TDD infected
Команда форума
dimagolov
гхм, а мне показалось что фрутик говорит о продаваемых (по крайней мере раньше в спаме они встречались) программах, которые генерят номера пополнения. собственно это было лохотроном.
 

fixxxer

К.О.
Партнер клуба
да-да, и именно как dimagolov говорит - первые 5-8 кодов были корректными.
как машинка для печати денег :D
 

WP

^_^
ТС, извините конечно, но чем вы думаете? =)
abs(crc32(microtime())) или md5(microtime()) - и вперёд.
Если генерировать в 1 поток, то коллизии не будет. Если во много потоков, то вероятность всё же присутствует, хотя и мизерная и ее можно не учитывать.
и фпоиск по "guid".
И не надо генерировать абстрактные коды... их надо хранить в БД.
 
Сверху