简体   繁体   中英

Python MD5 not matching md5 in terminal

I am getting MD5 of several files using python function:

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

though when I go to the terminal and do a

md5 file

the result I'm getting is not the same my python script is outputting (they don't match). Any chance someone knows why?

hashlib.md5() takes the contents of the file not its name.

See http://docs.python.org/library/hashlib.html

You need to open the file, and read its contents before hashing it.

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

Try this

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

what is file ? it should equal to open(filename, 'rb').read() . is it?

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM