为什么md5总是在某个文件上发生变化?

时间:2011-09-29 07:53:26

标签: md5

我有这个任务需要调查为什么文件的md5值不断变化。

示例:

  1. 我需要生成某台机器的诊断文件。

  2. 生成文件后,会生成一个.zip文件,比如Diag.zip,其中包含该特定计算机的所有信息/文件。

  3. 内部Diag.zip文件包含一个.xls,比如说,Data.xls包含该特定机器中所有文件的所有摘要,包括,文件目录,文件版本,文件大小,创建时间和md5。

  4. 然后将Data.xls的所有信息保存在数据库中。

  5. 一天左右后,请在步骤1-4再次进行。

    然后,当我在2周范围内查询数据库中Data.xls的所有保存数据时,它显示该特定计算机中的几乎所有文件都更改了md5值。

    问题是:为什么每次生成新的诊断文件时md5值总是会改变?

2 个答案:

答案 0 :(得分:5)

excel文件似乎存在问题,特别是Excel 2003 xls文件。每当他们在Excel中打开时,即使他们没有被更改并且没有得到保存,Excel也会自动更新一些文件的元数据,例如"文档属性和个人信息"和"最后访问的统计数据"。因此,每次打开文件都会发生一些变化,这也会导致MD5也发生变化。

避免此问题的一种方法是删除"文档属性和个人信息"。

从Office文档中删除隐藏的数据和个人信息。 Excel 2007:Remove Hidden Data and Personal Information from Office Documents

从Office文档中删除隐藏的数据和个人信息。 Excel 2013,Excel 2010:Remove Hidden Data and Personal Information by Inspecting Workbooks

避免这种情况的其他方法是使用xlsx文件。我一直试图在xlsx文件中复制这种行为,但它似乎只发生在xls(2003)上。

答案 1 :(得分:1)

MD5基于很多东西(目前我们都不知道)。但我可以假设filesize,filename&创立日期。 如果其中一个更改,则md5哈希值会更改。完全相同的文件将始终返回完全相同的md5哈希。新文件始终生成新的md5哈希值。