gpt4 book ai didi

python - python 中的 md5 输出与命令行不同(即使在二进制模式下)

转载 作者:行者123 更新时间:2023-11-28 23:06:21 27 4
gpt4 key购买 nike

我正在编写一个脚本,需要检查 OSX 和 Windows 上文件的 md5 总和,作为完整性检查,我将结果与命令行 md5 工具的结果进行了比较,但是我得到不同的结果。这是代码

def MD5File(self, f, block_size=2**20):
md5 = hashlib.md5()
while True:
data = f.read(block_size)
if not data:
break
md5.update(data)
return md5.hexdigest()

with open(path, 'rb') as f:
print MD5File(path)

我做了明显的事情,以二进制模式打开文件,但它仍然给出不同的结果。我尝试了不同的缓冲数据的方法,包括一次读取所有数据,python 脚本始终返回相同的东西,但这与 md5 命令不同。

那么还有其他明显的我做错的事情吗,或者运行 md5 filename 实际上并没有达到您的预期?当我直接读取文件的二进制文件时,不应该有任何换行问题。如果我运行 cat filename | md5 然后我又得到了不同的结果。

最佳答案

以下对我来说是正确的:

In [1]: with file("play.py") as f:
...: data = f.read()
...: from hashlib import md5
...: print(md5(data).hexdigest())
...:
07030b37de71f3ad9ef2398b4f0c3a3e

In [2]:
bensonk@angua ~ $ md5 play.py
MD5 (play.py) = 07030b37de71f3ad9ef2398b4f0c3a3e

请尝试我的代码,看看它是否适合你。如果没有,你会上传一个gist吗?你的 python 脚本和示例文件供我尝试?

关于python - python 中的 md5 输出与命令行不同(即使在二进制模式下),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5141275/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com