Для целостности файла (например, случайного / случайного повреждения) достаточно одного хэша. 128 бит = 2 -128 вероятность необнаруженной ошибки, которая для всех практических целей достаточно мала.
Для обеспечения криптографической целостности файла (например, гарантии того, что кто-то злонамеренно не подставил альтернативный файл), я думаю, что вы говорите о подходе с поясом и подтяжками.
MD5 считается «слабым» в том смысле, что можно создать два документа с одинаковым хешем с гораздо меньшим количеством процессорного времени, чем это потребуется для поиска методом «грубой силы» («сопротивление коллизии» в MD5). был сломан).
Но это не (насколько я знаю) "слабый" с точки зрения того, что если у вас есть произвольный документ X, кто-то другой может создать документ Y с таким же хешем с гораздо более легким временем, чем с помощью грубой силы поиск (MD5 все еще имеет «сопротивление прообразу»). (Различие подобно разнице между походом на вечеринку и поиском двух человек с одинаковым днем рождения и поиском другого человека с таким же днем рождения, как у вас.)
Даже если в этом отношении MD5 не работает, маловероятно, чтобы кто-то придумал алгоритм создания документов для соответствия произвольному хэшу MD5 и произвольному хешу SHA1.
Это звучит как напряжение между двумя принципами «не кладите все яйца в одну корзину» против «положите все яйца в одну корзину и следите за корзиной». Или как тратить деньги на два засова против одного засова, который вдвое дороже и стоит вдвое дороже. В идеале было бы лучше потратить процессорное время на вычисление одного безопасного 256-битного хэша вместо двух менее безопасных 128-битных хэшей с использованием различных алгоритмов. (да, я знаю, что SHA1 является 160-битным, это всего лишь иллюстрация) С большей вероятностью вы получите более высокую производительность для желаемого уровня безопасности, то есть , если 256-битный хэш не существует. я сломан Если он нарушен, вам может быть лучше использовать алгоритм с двумя алгоритмами, чтобы просто застраховать свои ставки.
Но опять же, если это просто целостность для защиты от ошибок, один хэш MD5 подойдет.
изменить: привести несколько полезных источников:
1
2
3 , "MD5 сегодня считается вредным" , RFC4270 , Последнее обновление NIST по конкурсу SHA-3 и " Зоопарк SHA-3 ".