Может ли два разных двоичных файла иметь одну и ту же сумму md5? Один двоичный файл прошивки имеет другой номер версии и помечен как исправленный, исправлена небольшая ошибка. Но оба файла имеют одинаковую сумму md5, я бы предположил, что пересмотренный файл не может иметь ту же сумму md5 - может быть, это ошибка?
Конечно. Известность уязвимости MD5 хорошо известна (см. Crypto.SE, Wikipedia). Хотя это все еще маловероятное событие, это можно сделать. Однако, в вашем случае, я бы заподозрил ошибку в копировании файлов.
Как правило, два файла могут иметь один и тот же хеш md5, только если их содержимое точно такое же. Даже один бит вариации будет генерировать совершенно другое значение хэша.
Однако существует одна предостерегаемость: сумма md5 составляет 128 бит (16 байт). Так как число различных возможных содержимого файла бесконечно, а число различных возможных сумм md5 конечно, в большинстве случаев вероятность (хотя и небольшая вероятность) столкновения хэшей. Другими словами, два разных файла могут выдавать одну и ту же сумму при хэшировании с помощью md5.
Из-за этого в некоторых случаях лучше использовать более высокий бит-хэш (более возможные разные выходы), чтобы уменьшить ( уже низкую) вероятность случайного столкновения хэшей и увеличить сложность создания преднамеренного столкновения хешей с помощью грубой силы.
Примеры более высоких хэш-бит включают семейство хешей SHA-2, особенно sha256, sha384 или sha512 (что является лучшим.) Число после sha указывает количество бит, которые генерирует соответствующий алгоритм хеширования.
Как говорили другие, столкновение MD5 гипотетически возможно, но крайне неправдоподобно (1 из 2 ^ 128 - это только 1 из 340,282,366,920,997,463,768,211,456), и у вас, скорее всего, есть ошибка копирования файлов.
Я бы рекомендовал выполнить побайтное сравнение двух файлов, используя один из многих методов, описанных здесь: https://superuser.com/questions/125376/how-do-i-compare-binary-files- in-linux.
Или просто diff file1 file2 - и если вы не получите сообщение «Двоичные файлы file1 и file2 differ», файлы будут одинаковыми.
Все приведенные выше ответы игнорируют наиболее важные детали:
Контрольная сумма MD5 определена как 128 бит. Это означает, что существует только 2 ^ 128 различных значений MD5. Сколько различных изображений прошивки возможно? Ну, это зависит от того, насколько они велики, и зависит от того, какой процент случайных байтовых последовательностей можно считать действительной прошивкой. Скорее всего, есть более чем 2 ^ 128 возможных изображений прошивки.
Гораздо больше, что означает, что должны быть дубликаты.
Но вероятность того, что любой лот образ прошивки, соответствующий заданной контрольной сумме MD5, является только 1 из 2 ^ 128, что является очень маленьким числом.
задано small.
Like , вероятность того, что любые два разработчика, случайно создающие разные образы, которые имеют одну и ту же контрольную сумму MD5 в любой момент существования человеческой цивилизации, слишком малы, чтобы вас беспокоиться.
Это случайно [!d11 ]. должен - другой вопрос. Если вы работаете в NSA, тогда 128 бит не будет достаточным количеством бит, чтобы удовлетворить ваших боссов, а MD5 обнаружил уязвимости, которые делают его более слабым, чем 128 бит.
Но если вы были работая в NSA, тогда вы, наверное, уже знали это.
Очень маловероятно, но возможно. Проверьте размер файлов и даты для получения дополнительной информации. Если файлы отличаются друг от друга, было бы еще более маловероятно, чтобы они имели одинаковый размер и хэш.