wired md5 hashing problem

Adam DePrince adam.deprince at gmail.com
Sun Mar 26 18:57:56 CEST 2006


On Sun, 2006-03-26 at 16:56 +0200, Matthias Güntert wrote:
> Hello list-members
> 
> i am in the process of writing a python script to backup my data. Now I
> would like to implement md5/sha1 hashes.  
> 
>     # do md5 fingerprinting 
>     if config.get("global", "crc") == "md5":
>         m = md5.new()
>         # open the file 
>         f = open(fname, "rb")
>         while 1:
>             block = f.read(1024*1024)
>             if not block:
>                 break
>             # generate the hash
>             m.update(block)
>         f.close()
>               
>         # write the results properly formated to a file
>         fd = file(fname + ".md5", "w")
>         fd.write(m.hexdigest())
>         fd.write("  " + fname + "\n")
>         fd.close()
> 
> 
> mguentert at uranos > md5sum -c backup.tar.bz2.md5                   
> /fileservice/temp/backup.tar.bz2: FAILED
> md5sum: WARNING: 1 of 1 computed checksum did NOT match
> 
> mguentert at uranos > cat backup.tar.bz2.md5                             
> d41d8cd98f00b204e9800998ecf8427e  /fileservice/temp/backup.tar.bz2


Hey, I found an md5 collision for your file! 

>>> import md5
>>> md5.new().hexdigest()
'd41d8cd98f00b204e9800998ecf8427e'
>>>
[adam at localhost Include]$ md5sum # hit ^d at start
d41d8cd98f00b204e9800998ecf8427e  -

Your file was empty when scanned. 

Without more information, I'd say that your file was empty when you ran
your python code.

But your code does work ... 

import md5
m = md5.new()
# open the file
fname="Python-2.4.2.tar.bz2"
f = open(fname, "rb" )
while 1:
    block = f.read(1024*1024)
    if not block:
        break
    # generate the hash
    m.update(block)
f.close()
fd = file(fname + ".md5", "w")
fd.write(m.hexdigest())
fd.write("  " + fname + "\n")
fd.close()

[adam at localhost ~]$ python test2.py
[adam at localhost ~]$ md5sum -c Python-2.4.2.tar.bz2.md5
Python-2.4.2.tar.bz2: OK

- Adam




More information about the Python-list mailing list