Python的MD5与终端中的MD5不匹配

5 投票
4 回答
6226 浏览
提问于 2025-04-15 19:04

我正在用Python的一个函数计算几个文件的MD5值:

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

但是当我在终端里执行一个命令:

md5 file

我得到的结果和我Python脚本输出的结果不一样(不匹配)。有没有人知道这是为什么呢?

4 个回答

3

试试这个

filehash = hashlib.md5(open('filename','rb').read())
print "FILE HASH: " + filehash.hexdigest()
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'

当然可以!请把你想要翻译的内容发给我,我会帮你把它变得更简单易懂。

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()

撰写回答