Les fonctions de hachage : MD5, SHA, à quoi ça sert
10 min · Débutant · 7 août 2026
Ce qu’on attend d’une bonne fonction de hachage
Trois propriétés définissent une fonction de hachage utile en sécurité :
- Taille fixe : quelle que soit la taille de l’entrée, la sortie a toujours la même longueur.
- Déterminisme : la même entrée produit toujours exactement la même empreinte.
- Effet avalanche : un changement infime de l’entrée (même un seul caractère) doit produire une empreinte radicalement différente, sans aucun lien visible avec l’empreinte d’origine.
L’effet avalanche, en direct
import hashlib
for texte in ["password", "Password", "password "]:
empreinte = hashlib.sha256(texte.encode()).hexdigest()
print(f"{texte!r:15} -> {empreinte}") Une seule majuscule, ou une espace en trop, et l’empreinte n’a plus rien en commun avec la précédente. C’est volontaire : si des entrées proches produisaient des empreintes proches, un attaquant pourrait s’en servir pour deviner l’entrée d’origine par approximations successives.
MD5, SHA-1, SHA-256 : même principe, pas la même confiance
import hashlib
message = b"test"
for nom, algo in [("MD5", hashlib.md5), ("SHA-1", hashlib.sha1), ("SHA-256", hashlib.sha256)]:
empreinte = algo(message).hexdigest()
print(f"{nom:8} : {empreinte} ({len(empreinte)} caracteres)") MD5 (1992) et SHA-1 (1995) sont plus anciens et surtout plus courts, donc plus rapides à calculer. Cette rapidité, combinée à des faiblesses découvertes depuis (des collisions, c’est-à-dire deux entrées différentes produisant volontairement la même empreinte, ont été construites), les rend impropres à un usage sensible aujourd’hui.
Attention
MD5 et SHA-1 restent parfois utilisés pour des usages non sensibles (vérifier qu’un téléchargement n’a pas été corrompu par erreur, par exemple). Pour tout ce qui touche à la sécurité (mots de passe, signatures), la famille SHA-2 (SHA-256 et au-delà) est la référence actuelle.