Если хэши идентичны, означает ли это, что содержимое файла одинаково 1: 1?
Все файлы представляют собой набор байтов (значения 0-255). Если два файла MD5 хэши совпадают, оба эти набора байтов, скорее всего, будут абсолютно одинаковыми (в одинаковом порядке, одинаковые значения).
Существует очень небольшая вероятность того, что два файла могут генерировать один и тот же MD5, который является 128-битным хешем. Вероятность:
Вероятность случайного столкновения всего двух хэшей составляет 1/2 128, что составляет 1 на 340 ундециллионов 282 дециллионов 366 ниллионов 920 октиллионов 938 септиллионов 463 квинтиллионов 373 квадриллионов 604 триллионов 431 миллиардов 768 миллионов 211 тысяч 456. (из ответа на StackOverflow ).
Хэши предназначены для работы «только в одном направлении» - то есть вы берете набор байтов и получаете хэш, но вы не можете взять хеш и вернуть коллекцию байтов.
Криптография зависит от этого (это один из двух способов сравнения, не зная, что это такое).
Примерно в 2005 году были обнаружены методы для получения хеша MD5 и создания данных, соответствующих этому хешу, для создания двух документов с одинаковым хешем MD5 ( атака коллизий ). Смотрите комментарий @ user2357112 ниже. Это означает, что злоумышленник может создать два исполняемых файла, например, с одним и тем же MD5, и, если вы решите, кому доверять, вы будете обмануты.
Таким образом, MD5 не должен использоваться для криптографии или безопасности. Например, плохо публиковать MD5 на сайте загрузки, чтобы гарантировать целостность загрузки. В зависимости от хеша MD5 вы сами не создавали для проверки того, что файл или содержимое данных - это то, чего вы хотите избежать.
Если вы создаете свои собственные, вы знаете, что не злите себя (надеюсь). Так что для вашего использования это нормально, но если вы хотите, чтобы кто-то еще мог воспроизвести его, и вы хотите опубликовать хеш MD5, лучше использовать лучший хеш.
Обратите внимание, что два файла Excel могут содержать одинаковые значения в одних и тех же строках и столбцах, но при этом общий поток файла может полностью отличаться из-за разного форматирования, стилей, настроек и т. Д.
Если вы хотите сравнить данные в файле, сначала экспортируйте их в CSV с теми же строками и столбцами, чтобы удалить все форматирование, а затем хэшировать или сравнивать CSV.