Это комбинаторный вопрос с некоторой теорией в требуемых алгоритмах хеширования.Какова вероятность того, что первые 4 байта MD5-хэша, вычисленные из содержимого файла, будут сталкиваться?
Допустим, вход может быть любая случайная последовательность байтов 30 кбайт до 5 МБ размера (я предполагаю, что делает довольно много комбинаций входных значений :))
Какова вероятность того, что первые 4 байта (или первые n байтов) хэша MD5, вычисленного из последовательности байтов, будет одинаковым для разных файлов?
В случае, если это невозможно вычислить специально для хэша MD5, то какова вероятность того, что любая хеш-функция, которая генерирует равномерно распределенные х-байтовые хэши, вычислит хэш с столкновением на первые n байтов для заданного диапазона входов?
Уточнение: не прокомментируйте безопасность MD5. Проблема, которую я пытаюсь решить, заключается в том, как обнаруживать идентичные файлы, а не связанные с безопасностью. – Marek
Недавняя реализация дедупликации ZFS привела к некоторым интересным прозрениям; хеш-столкновения действительно вызвали интересную атаку. Если вы знаете, что только что созданный файл идентичен другому файлу, вы фактически можете победить _file system_ security. Фактически, файловая система _insecurity_ была прямым следствием SHA256 _security_ - если у вас были идентичные хэши SHA256, вы в значительной степени знаете, что у вас одинаковые файлы. – MSalters
Не могли бы вы пояснить, что вы имеете в виду с байтами? Когда хеш начинается с «E8: F0: D3: 03: ...», это первые четыре байта «E 8 F 0» или «E8 F0 D3 03»? – tanascius