wired md5 hashing problem
Adam DePrince
adam.deprince at gmail.com
Sun Mar 26 11:57:56 EST 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