Python MD5在终端中不匹配md5

时间:2010-02-09 13:22:55

标签: python hash md5

嘿伙计们,我正在使用python函数获取几个文件的MD5

filehash = hashlib.md5(file)
print "FILE HASH: " + filehash.hexdigest()

虽然我去了航站楼并且做了

md5 file

我得到的结果与我的python脚本输出不一样(它们不匹配)。有人知道为什么会这样吗?谢谢。

4 个答案:

答案 0 :(得分:22)

hashlib.md5()获取文件的内容而不是其名称。

请参阅http://docs.python.org/library/hashlib.html

您需要打开文件,并在散列之前阅读其内容。

f = open(filename,'rb')
m = hashlib.md5()
while True:
    ## Don't read the entire file at once...
    data = f.read(10240)
    if len(data) == 0:
        break
    m.update(data)
print m.hexdigest()

答案 1 :(得分:6)

$ md5 test.py
MD5 (test.py) = 04523172fa400cb2d45652d818103ac3
$ python
Python 2.6.1 (r261:67515, Jul  7 2009, 23:51:51) 
[GCC 4.2.1 (Apple Inc. build 5646)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import hashlib
>>> s = open('test.py','rb').read()
>>> hashlib.md5(s).hexdigest()
'04523172fa400cb2d45652d818103ac3'

答案 2 :(得分:3)

试试这个

filehash = hashlib.md5(open('filename','rb').read())
print "FILE HASH: " + filehash.hexdigest()

答案 3 :(得分:1)

什么是file?它应该等于open(filename, 'rb').read()。是吗?