我有这个任务需要调查为什么文件的md5值不断变化。
示例:
我需要生成某台机器的诊断文件。
生成文件后,会生成一个.zip文件,比如Diag.zip,其中包含该特定计算机的所有信息/文件。
内部Diag.zip文件包含一个.xls,比如说,Data.xls包含该特定机器中所有文件的所有摘要,包括,文件目录,文件版本,文件大小,创建时间和md5。
然后将Data.xls的所有信息保存在数据库中。
一天左右后,请在步骤1-4再次进行。
然后,当我在2周范围内查询数据库中Data.xls的所有保存数据时,它显示该特定计算机中的几乎所有文件都更改了md5值。
问题是:为什么每次生成新的诊断文件时md5值总是会改变?
答案 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哈希值。