Почему md5 всегда меняется на определенный файл? - PullRequest
1 голос
/ 29 сентября 2011

У меня есть задача, требующая изучения того, почему значение md5 файла постоянно меняется.

Пример:

  1. Мне нужно сгенерировать файл диагностики определенной машины.

  2. После создания файла он создает файл .zip, например, Diag.zip, который содержит всю информацию / файлы этого конкретного компьютера.

  3. Внутри файла Diag.zip содержится .xls, скажем, Data.xls, который содержит всю сводную информацию обо всех файлах на данном компьютере, включая каталог файла, версию файла, размер файла, время создания и md5.

  4. Затем сохраните всю информацию о Data.xls в базе данных.

Через день или около того сделайте это снова, выполнив шаги 1-4.

Затем, когда я запросил все данные сохранения файла Data.xls в базе данных за 2 недели, и он показывает, что почти все файлы на этом компьютере изменили значение md5.

Вопрос: почему значение md5 всегда меняется каждый раз, когда я генерирую новые диагностические файлы?

Ответы [ 2 ]

5 голосов
/ 01 мая 2014

Кажется, есть проблема с файлами Excel, в частности с файлами Excel 2003 xls.Каждый раз, когда они открываются в Excel, даже если они не изменяются и не сохраняются, Excel автоматически обновляет некоторые метаданные файла, такие как «Свойства документа и личная информация» и «Статистика последнего доступа».Поэтому файл при каждом открытии немного меняется, и это также приводит к изменению MD5.

Один из способов избежать этой проблемы - удалить «свойства документа и личную информацию».

Удалить скрытые данные и личную информацию из документов Office.Excel 2007: Удаление скрытых данных и личной информации из документов Office

Удаление скрытых данных и личной информации из документов Office.Excel 2013, Excel 2010: Удаление скрытых данных и личной информации путем проверки рабочих книг

Другой способ избежать этого - использовать файлы xlsx.Я пытался воспроизвести это поведение в файлах xlsx, но, похоже, это происходит только в xls (2003).

1 голос
/ 29 сентября 2011

MD5 основан на многих вещах (которые в настоящее время нам неизвестны). Но я могу предположить размер файла, имя файла и дату создания. Если одно из этих изменений, хэш md5 изменяется. Точно такой же файл всегда будет возвращать точно такой же хэш md5. Новый файл всегда генерирует новый хэш md5.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...