Md5 is different in Windows and Linux

Tim Golden mail at timgolden.me.uk
Mon Mar 2 03:50:38 EST 2015


On 02/03/2015 06:19, 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.?


Because you're opening the file in text mode (implicitly; that's the
default) which silently converts certain characters. If you open it in
binary mode:

f = open("somefile.txt", "rb")

then you should see the same result

TJG



More information about the Python-list mailing list