Calculando o md5sum de uma iso usando python

Garimpando na web achei este link:
http://abstracthack.wordpress.com/2007/10/19/calculating-md5-checksum/
O autor mostra duas abordagens

1 - O modo errado (aloca tudo na RAM)

from md5 import md5
fname = "ubuntu-7.10-desktop-i386.iso"
s = md5(open(fname, "rb").read()).hexdigest()
print "md5 checksum: %s" % s


2 - Um pouco mais elaborado mas trabalha em blocos e finalmente junta tudo
em um só resultado:

from md5 import md5
fname = "ubuntu-7.10-desktop-i386.iso"
block_size = 0x10000
def upd(m, data):
m.update(data)
return m
fd = open(fname, "rb")
try:
contents = iter(lambda: fd.read(block_size), "")
m = reduce(upd, contents, md5())
print "md5 checksum: %s" % m.hexdigest()
finally:
fd.close()


Finalmente achei um outro post aqui mostrando o uso da biblioteca hashlib
que parece ser mais atual, veja portanto o código pronto:

#!/usr/local/bin/python

import os, sys
import hashlib

def md5(fileName, excludeLine="", includeLine=""):
"""Compute md5 hash of the specified file"""
m = hashlib.md5()
try:
fd = open(fileName,"rb")
except IOError:
print "Unable to open the file in readmode:", filename
return
content = fd.readlines()
fd.close()
for eachLine in content:
if excludeLine and eachLine.startswith(excludeLine):
continue
m.update(eachLine)
m.update(includeLine)
return m.hexdigest()

if __name__ == "__main__":
for eachFile in sys.argv[1:]:
print "%s %s" %(md5(eachFile), eachFile)

Nenhum comentário:

Postar um comentário

Insira seu comentário - O mesmo será submetido à aprovação!

linux-cookbook

Grupos do Google
Participe do grupo linux-cookbook
E-mail:
Visitar este grupo