Trier par :
View:

Catégorie : python

Python : hasher un fichier avec md5 et sha1


Utilisateurs de python, je vous souhaite la bienvenue ! Cette semaine je vous offre 2 fonctions bien utiles dans certains cas. Elles permettent d’effectuer une empreinte de vos fichiers en utilisant le md5 et/ou le sha1. Ces 2 hash sont assez vieux et commencent à être obsolète toutefois ils sont encore très utilisés !
Une fonction effectuant un « hash » génère une empreinte qui est « normalement » unique pour chaque fichier (il y a parfois des collisions, c’est-à-dire 2 fichiers différents ayant la même empreinte, mais c’est extrêmement rare). Sans plus attendre, voici le code python permettant de calculer l’empreinte md5 ainsi que l’empreinte sha1 :

import hashlib
 
def sumFileMD5(filePath):
	fichier = open(filePath, 'r')
	c = hashlib.md5()
	while 1:
		try:
			d = fichier.next()
			c.update(d)
		except: break
	fichier.close()
	return c.hexdigest()
 
def sumFileSHA1(filePath):
	fichier = open(filePath, 'r')
	c = hashlib.sha1()
	while 1:
		try:
			d = fichier.next()
			c.update(d)
		except: break
	fichier.close()
	return c.hexdigest()

 

Les fonctions calculant des empreintes sont toutes différentes. C’est pour cela qu’il y en a plusieurs. Pour pouvoir utiliser ces 2 fonctions vous n’aurez qu’à envoyer en paramètre l’adresse du fichier. Exemple pour le fichier suivant :

?Download lorem.txt
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean elementum consectetur sapien, a ultrices orci pharetra eu. Aliquam adipiscing varius eleifend. Curabitur congue blandit odio sit amet aliquet. Cras accumsan mattis nibh non lobortis. Praesent pretium pellentesque euismod. Aliquam ac orci quis turpis lacinia sodales. Duis porta, elit in tempor tempor, leo dui ornare sapien, et sollicitudin mi metus quis felis. Nullam sed sapien purus, vel ultrices sem. Curabitur nec quam vulputate felis fermentum interdum id vitae justo. Donec vehicula augue a justo hendrerit in pellentesque elit mollis. Fusce at turpis at massa vehicula ornare vitae ut massa. Phasellus egestas, neque ut vehicula luctus, lacus tellus volutpat est, sed tincidunt lacus dolor ut lectus. Curabitur hendrerit ornare urna sit amet iaculis. Praesent eleifend placerat est, ut mattis lorem commodo vitae.

 

Ajoutez ces ligne en bas du fichier python :

?View Code PYTHON
md5 = sumFileMD5('lorem.txt')
sha1 = sumFileSHA1('lorem.txt')
 
print "Empreinte md5 = %s"%md5
print "Empreinte sha1 = %s"%sha1

 

Résultat lorsque vous exécutez le script :

Empreinte md5 = f0383024ac976ceb01cf6eb9f2bb4db2
Empreinte sha1 = d34d3b058b929ec271f63267b5f014db4210f8ec

Menu