首页 > 解决方案 > 如果文件日期和时间已修改,文件的 MD5 是否会更改

问题描述

我有一个 rar 文件,它是文件的集合。我已经使用下面的 python 代码在 rar 文件上生成了 MD5 校验和,然后假设 rar 文件生成的 md5 是 XXX。当我只是提取 rar 文件(没有修改/添加文件)并再次创建 rar 文件时,我观察到校验和已经改变(除了 XXX)。

import hashlib
hashlib.md5("filename.rar").hexdigest()

有任何算法,如 CRC、校验和、SHA1 等,即使文件日期/时间更改并且文件的实际内容没有变化,计算的校验和也是相同的?

标签: pythonmd5sha1checksumcrc

解决方案


散列文件时自然不会包含文件系统级数据,因为文件系统不是文件的一部分!

但是,当将许多文件压缩在一起时,会创建一个新文件,该文件是一个具有自己的文件系统来保存其他文件的容器,并且它们都被压缩在一起..这个新文件系统中的更改会影响最终哈希,因为与相关联的元数据现在包括单个文件

single files:
A -> hash of A
B -> hash of B

multiple files together:
A,B -> C(A,B) -> hash of C(A,B)

这不会包含关于 的文件系统级信息C,但会包含关于AB因为它们必须包含在C


推荐阅读