Сколько данных (много МБ) я могу однозначно определить с помощью MD5 - PullRequest
3 голосов
/ 06 декабря 2010

У меня миллионы записей данных, каждый размером около 2 МБ. Каждый из этих фрагментов данных хранится в файле, и существует набор других данных, связанных с этой записью (хранящихся в базе данных).

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

Что мне нужно знать, так это то, является ли хеш MD5 содержимого данных подходящим способом для уникальной идентификации фрагмента данных объемом 2 МБ, то есть я могу использовать хеш MD5, не слишком заботясь о коллизиях?

Я понимаю, что есть вероятность столкновения, меня беспокоит, насколько велика вероятность столкновения с миллионами записей данных по 2 МБ? Является ли столкновение вероятным явлением? Как насчет того, чтобы сравнивать его со сбоями жесткого диска или другими сбоями в работе компьютера? Сколько данных можно использовать MD5 для безопасной идентификации? а как насчет миллионов ГБ файлов?

Меня не беспокоит злоба или фальсификация данных. У меня есть такая защита, что я не буду получать манипулированные данные.

1 Ответ

3 голосов
/ 06 декабря 2010

Это сводится к так называемому парадоксу дня рождения .Эта страница Википедии имеет упрощенные формулы для оценки вероятности столкновения.Это будет очень небольшое число.

Следующий вопрос - как вы поступите, скажем, с вероятностью столкновения 10 -12 - смотрите этот очень похожий вопрос .

...