17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

272<br />

La bibliothèque standard<br />

TROISIÈME PARTIE<br />

Des systèmes de cache mémoire peuvent utiliser MD5 pour identifier une donnée,<br />

etc.<br />

haslib.md5() fournit un objet md5, décrit ci-dessous.<br />

class md5([chaîne])<br />

Les objets de type md5 peuvent être initialisés avec un objet de type string. Ils fournissent<br />

quatre méthodes :<br />

update(s) : concatène l’objet de type string à la chaîne déjà stockée.<br />

digest() : calcule et renvoie la clé correspondant à la chaîne stockée.<br />

hexdigest() : calcule et renvoie la clé comme digest(), mais sous la forme d’une<br />

représentation hexadécimale. C’est la forme la plus utilisée.<br />

copy() : renvoie un clone de l’objet md5. Permet d’optimiser les calculs MD5 qui<br />

sont relativement coûteux : si la chaîne stockée est une sous-chaîne d’une autre<br />

chaîne à calculer, l’objet peut être réutilisé par ce biais.<br />

Calcul de la clé MD5 d’un fichier<br />

>>> import hashlib<br />

>>> cle = hashlib.md5()<br />

>>> with open('Plone.pdf') as f:<br />

... cle.update(f.read())<br />

...<br />

>>> digest = cle.hexdigest()<br />

>>> digest<br />

'5e6ff71b1791f645cfbfd0d6f8d8e522'<br />

hashlib.sha<br />

Les clés MD5 peuvent être cassées en quelques jours, moyennant une puissance de<br />

calcul importante et des techniques complexes. La recherche des collisions est une de<br />

ces techniques et tente de trouver deux données différentes qui génèrent la même clé<br />

de hachage.<br />

L’algorithme SHA-1 offre une clé de hachage moins sensible aux collisions et plus<br />

difficile à casser. Il est implémenté par le module sha, qui fournit exactement la<br />

même interface que md5.<br />

Calcul de la clé SHA-1 d’un fichier<br />

>>> import hashlib<br />

>>> cle = hashlib.sha()<br />

>>> with open('zasync .pdf') as f:<br />

... cle.update(f.read())

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!