我正在编写一个脚本,它需要检查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
,那么我会再次得到不同的结果。在
哦,这是一个用户错误。我重写了shell中的
md5
命令,只返回字符串的哈希值而不是文件。在以下内容对我来说是正确的:
请尝试我的代码,看看它是否适合您。如果没有,你能上传一个你的python脚本的gist和一个示例文件让我试试吗?在
相关问题 更多 >
编程相关推荐