Python和其他文件哈希之间的MD5哈希差异
问题描述:
我一直在Python中进行一些编程(仍然是n00b),并且遇到了一些奇怪的问题。我制作了一个小程序来查找在命令行上传递给它的文件名的MD5散列。我使用了一个函数,我在SO上找到了here。当我用文件运行它时,我得到了一个散列“58a ... 113”。但是当我运行微软的FCIV或\ Python26 \ Tools \ Scripts \中的md5sum.py时,我得到了不同的散列,“591 ... ae6”。在脚本中md5sum.py的实际哈希部分是Python和其他文件哈希之间的MD5哈希差异
m = md5.new()
while 1:
data = fp.read(bufsize)
if not data:
break
m.update(data)
out.write('%s %s\n' % (m.hexdigest(), filename))
这看起来功能上等同于在对方的回答中给出的函数的代码...我缺少什么? (这是我第一次张贴到计算器,请让我知道如果我做错了。)
答
在评论中已经解决了,但如果有人想给我点...;)
开放你的文件在二进制模式!
f = open(path, 'rb')
'fp'在哪里创建?你打开它在ASCII模式而不是二进制? – FogleBird 2010-05-25 17:28:39
啊哈!就是这样。我没有在程序的open()函数中指定模式参数,所以它默认为文本模式。我将模式设置为'rb',现在它返回正确的散列。谢谢! – Sam 2010-05-25 17:33:46