Шанс на создание 2 одинаковых хэшей на основе времени ()? - PullRequest
0 голосов
/ 16 декабря 2010

Вопрос довольно простой, но я не смог найти ответ на этот вопрос ... В основном, мое приложение генерирует имена файлов с md5(time());.

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

P.S. Поскольку в заголовке моего вопроса говорится, что хэши не являются точными хэшами, каковы шансы, если они вообще есть, снова на получение равных результатов для каждого типа хешей sha1();, sha512(); и т. Д.? 100100

Заранее спасибо!

Ответы [ 2 ]

1 голос
/ 23 декабря 2010

По моим оценкам, это небезопасно из-за возможных изменений во времени со стороны людей и других процессов, таких как NTP, которые любезно отметил FrankH Я настоятельно рекомендую использовать криптографически безопасный ГСЧ (генератор случайных чисел), если ваша структура позволяет.

0 голосов
/ 16 декабря 2010

Равные результаты вряд ли будут результатом этого, вы можете просто проверить это самостоятельно, проверив уникальность md5(0) ... md5(INT32_MAX), поскольку это общий диапазон time_t.Я не думаю, что в этом входном пространстве есть конфликты для любого из названных вами хэшей.

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

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