md5sum
Насколько точен процесс при использовании для проверки целостности файла?
Означает ли подтвержденный MD5, что КАЖДЫЙ бит точно такой же, или есть пороговое значение, которое необходимо преодолеть, чтобы двоичное изменение отразилось на MD5?
Любая документация о том, как генерируется md5, также приветствуется.
Ответы:
MD5 сломан для этой цели против интеллектуального противника. Можно злонамеренно создать два разных блока данных, которые производят один и тот же хэш MD5.
Однако вполне целесообразно (хотя есть почти наверняка лучшие способы) использовать MD5 для защиты от непреднамеренного повреждения данных при передаче или хранении. Хотя вполне возможно, что такое событие может привести к тому, что MD5-хеш будет одинаковым, вероятность настолько мала, что это почти невозможно представить, о чем стоит беспокоиться. Отказы, вызванные фоновым излучением, туннелированием, статическими и десятками других источников, были бы на несколько порядков более вероятными.
Даже если у вас есть квадриллион единиц данных, вероятность того, что несовпадение MD5 приведет к созданию хеша MD5, принадлежащего одной из этих квадриллионов, намного меньше единицы в квадриллионе.
источник
MD5 - это хеш. Он в основном отображает все содержимое файла в небольшую строку длиной 16 байтов IIRC.
Очевидно, будет несколько файлов, которые хэшируют к одной и той же сумме MD5. Следовательно, совпадающая сумма MD5 не является гарантией точного совпадения между файлами.
Там нет порога как такового, потому что работает хэши. Таким образом, сумма MD5 может обнаружить даже одно-битное изменение. Однако большое количество изменений в одном бите может привести к тому, что хеш MD5 будет одинаковым. Поэтому вполне разумно использовать MD5 для проверки целостности файла на случайное повреждение, но нет, если злонамеренные намерения возможны, поскольку кто-то может изменить файл, убедившись, что хеш-код MD5 такой же.
источник
MD5-хэш состоит из 128 бит. Один перевернутый бит в источнике переворачивает (в среднем) 64 бита в хэше.
Вероятность случайного столкновения двух хэшей составляет 1/2 ^ 128, что составляет 1 на 340 унцдиллион 282 дециллионов 366 ниллионов 920 октиллионов 938 септиллионов 463 квинтиллионов 463 квинтиллионов 374 квадриллионов 607 триллионов 431 миллиардов 768 миллионов 211 тысяч 456.
Однако, если вы сохраните все хеши, то благодаря парадоксу вероятность рождения немного выше. Чтобы иметь 50% вероятности столкновения любого хеша, вам нужно 2 ^ 64 хеша. Это означает, что для получения коллизии в среднем вам потребуется хэшировать 6 миллиардов файлов в секунду в течение 100 лет.
Источник: porneL, /programming/201705/how-many-random-elements-before-md5-produces-collisions
источник