Python tarfile和zipfile为两个相同的文件生成不同MD5的归档文件

2024-09-30 01:34:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图确保2个档案内有相同的文件产生相同的MD5校验和。在

例如,file1.txt和file2.txt具有相同的内容,它们之间唯一的区别是创建时间。但是,它们产生相同的MD5:

>>> import md5
>>> md5.md5(open("file1.zip","rb").read()).hexdigest()
'c99e47de6046f141693b9aecdbdd2dc2'
>>> md5.md5(open("file2.zip","rb").read()).hexdigest()
'c99e47de6046f141693b9aecdbdd2dc2'

但是,当我为两个相同的文件创建tarfile(或zipfile)归档文件时,得到的MD5s完全不同。在

^{pr2}$

你知道为什么会这样吗?我猜这和归档文件中的头数据有关。也许归档文件维护了file1和file2的不同创建时间,因此有不同的校验和。在


Tags: 文件txtread时间档案openzip校验
2条回答

尝试使用zipfile:

enter image description here

关键点:给func writestr一个ZipInfo对象,而不是str

enter image description here 因为如果不是ZipInfo的对象,zinfo会得到一个动态的日期时间。在

enter image description here 唯一的动态变量将写入zip文件头,因此zip文件md5将更改。在

虽然两个档案的有效负载可能相同,但档案的基本结构不同,压缩只会增加这些差异。在

Zip和Tar都是归档格式,它们都可以与压缩相结合;它们通常是这样。不同的压缩算法和根本不同的底层格式结构的组合将导致不同的md5

在这种情况下,最后一次修改时间和底层文件的名称是不同的,即使文件的内容是相同的;这会导致不同的MD5。在

相关问题 更多 >

    热门问题