Python 来自同一转换PDF的两个PNG文件的哈希不同

Python 来自同一转换PDF的两个PNG文件的哈希不同,python,imagemagick,hashlib,Python,Imagemagick,Hashlib,对于同一个.png文件,我得到了不同的哈希值。这些文件是使用imagemagick convert v6.9.1-10创建的 文件创建: $ convert test.pdf test_one.png $ convert test.pdf test_two.png Python: import hashlib h1 = hashlib.md5() h1.update(open('test_one.png', 'r').read()) first_hash = h1.hexdigest()

对于同一个.png文件,我得到了不同的哈希值。这些文件是使用imagemagick convert v6.9.1-10创建的

文件创建:

$ convert test.pdf test_one.png
$ convert test.pdf test_two.png
Python:

import hashlib

h1 = hashlib.md5()
h1.update(open('test_one.png', 'r').read())
first_hash = h1.hexdigest()

h2 = hashlib.md5()
h2.update(open('test_two.png', 'r').read())
second_hash = h2.hexdigest()
我希望
first\u hash
second\u hash
相同,但事实并非如此

为什么散列不一样?

在这里找到了答案:

这些图像具有不同的EXIF数据

使用
-strip
标志执行
convert
命令将删除所有EXIF数据,哈希值将完全相同。

在此处找到答案:

这些图像具有不同的EXIF数据


convert
命令使用
-strip
标志会删除所有EXIF数据,散列结果是相同的。

您是否检查了明显的情况,例如磁盘上的两个文件是相同的,并且将第二次更新更改为read test_one.png会产生相同的结果,因为您知道它会做两次相同的事情。第二个测试是为了确保它确实是可重复的,并且hashlib不会在这个过程中添加一些随机的盐。谢谢你的建议。我刚刚遇到了这个答案,它为我提供了我所需要的:。我只需要在convert命令中添加
-strip
。我认为.png文件中一定嵌入了不同的时间戳。您是否检查过明显的问题,比如这两个文件在磁盘上是相同的,并且将第二次更新更改为读取test_one.png会得到相同的结果,因为您知道它会做两次相同的事情。第二个测试是为了确保它确实是可重复的,并且hashlib不会在这个过程中添加一些随机的盐。谢谢你的建议。我刚刚遇到了这个答案,它为我提供了我所需要的:。我只需要在convert命令中添加
-strip
。我认为.png文件中必须嵌入不同的时间戳。