Md5 is different in Windows and Linux
Peter Otten
__peter__ at web.de
Mon Mar 2 03:54:13 EST 2015
Sarvagya Pant wrote:
> Hello, I am amazed that the md5 of a file given by python in windows is
> different than that of linux. Consider the following code:
>
> import hashlib
> def md5_for_file(f, block_size=2**20):
> md5 = hashlib.md5()
> while True:
> data = f.read(block_size)
> if not data:
> break
> md5.update(data)
> return md5.hexdigest()
>
> f = open("somefile.txt")
> print md5_for_file(f)
>
> When I run the program I get the checksum value:
> 2f9cc8da53ee89762a34702f745d2956
>
> But on this site http://onlinemd5.com/ and on linux it has value
> E10D4E3847713472F51BC606852712F1.
>
> Why is there difference in value of Checksum computed by python in windows
> and other system.?
You have to open the file in binary mode
f = open("somefile.txt", "rb")
Otherwise on Windows "\r\n" will be translated to "\n" while Linux passes
the bytes unchanged -- and thus md5.update() will see different data and
produce a different checksum.
More information about the Python-list
mailing list