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'
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With