比较python中两个文件的md5哈希值

新手上路,请多包涵

我想比较两个文件的哈希值。但是不管文件是否不同,即使是不同的哈希值比较结果 True

这是代码:

 import hashlib

hasher1 = hashlib.md5()
afile1 = open('canvas.png', 'rb')
buf1 = afile1.read()
a = hasher1.update(buf1)
print(str(hasher1.hexdigest()))

hasher2 = hashlib.md5()
afile2 = open('img5.png', 'rb')
buf2 = afile2.read()
b = hasher2.update(buf2)
print(str(hasher2.hexdigest()))

print(str(a) == str(b))

输出:

 614c9853a7f62c5b60d7d15bde80708f
76dc116b2c1b19b265db5e657846e649
True

Process finished with exit code 0

原文由 VAGrus 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 529
2 个回答

作为一般规则,Python 方法遵循 命令-查询分离 原则——以便修改对象(即命令)的方法返回 None 。例如,这包括 list.sortdict.updatehasher1.update 方法也是如此。所以

a = hasher1.update(buf1)

None 分配给 a 。相反,使用

hasher1.update(buf1)
a = hasher1.hexdigest()

b 类似。


 import hashlib

digests = []
for filename in ['canvas.png', 'img5.png']:
    hasher = hashlib.md5()
    with open(filename, 'rb') as f:
        buf = f.read()
        hasher.update(buf)
        a = hasher.hexdigest()
        digests.append(a)
        print(a)

print(digests[0] == digests[1])

原文由 unutbu 发布,翻译遵循 CC BY-SA 3.0 许可协议

这对我有用:

 import hashlib
#File 1
hasher1 = hashlib.md5()
afile1 = open('C:/.../elephant_rgb.png', 'rb')
buf1 = afile1.read()
a = hasher1.update(buf1)
md5_a=(str(hasher1.hexdigest()))
#File 2
hasher2 = hashlib.md5()
afile2 = open('C:/.../innDay-Pic2.png', 'rb')
buf2 = afile2.read()
b = hasher2.update(buf2)
md5_b=(str(hasher2.hexdigest()))
#Compare md5
if(md5_a==md5_b):
    print("Yes")
else:
    print("No")

##No

原文由 Ani Menon 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题