Т.к. в md5 хэше 16 байт => 2^(16*8)=3,4*10^38 комбинаций.
Проще говоря, если для вычисления одного хэша по 16 байт требуется одна миллисекунда, то нам потребуется 10790283070806014188970529154,99 лет для расчета всех этих хэшей.
Зря вы так на этот раз. Сперва пост был действительно в духе Ализара: «Сенсация! MD5 взломан!», но после пары замечаний он его полностью переписал, добавив технических деталей, и нормально расставив акценты.
А MD5 уже давно признан ненадежным.
Нет, Марк Стивенс нашел алгоритм поиска коллизий второго рода для сообщений размером в 1 блок. До этого были найдены медленные алгоритмы для коллизий 1-го рода и быстрые — для 2-го, но и те, и другие работали с длинными сообщениями.
А если использовать сразу два быстрых хэш алгоритма(sha1 и md5 например). И хранить соответственно два хэша.
Хоть и там и там есть коллизии, думаю подобрать набор данных который будет выдавать коллизии для обоих алгоритмов будет в разы сложнее.
Да я и сам так делаю :)
Просто на мой взгляд в плане уникальности на одном наборе данных несколько хэш алгоритмов может быть гораздо выгодней чем любой один. Разве только он не имеет коллизий на блоке одного размера, в этом случае вторый параметром для определения уникальности будет размер.
p.s. мне для уникальности файлов пока хватает md5+sha1+file size, но есть предположение что в рамках больших чисел в конце концов эта система все равно может дать сбой, пометив два разных файла как один. ^_^
Ну… весь GIT зиждется на предположении что в одном конкретном репозитории никогда не будет коллизий в SHA1. Потому что там любой обьект однозначно идентифицируется своим SHA1 хешем.
Считается, что вероятность коллизии настолько маленькая, что ей можно пренебречь.
Коллизии в 512-битных блоках MD5