Casser un hash : dictionnaire, force brute, rainbow tables
11 min · Intermédiaire · 7 août 2026
Deviner, pas déchiffrer
Puisqu’un hachage n’a pas d’opération inverse (chapitre 1), « casser » une empreinte ne peut vouloir dire qu’une chose : essayer des entrées candidates, les hacher avec le même algorithme, et comparer le résultat à l’empreinte cible. Trois méthodes structurent la façon dont ces candidats sont choisis.
Attaque par dictionnaire : miser sur les mots de passe courants
import hashlib
# L'empreinte a "casser" (dans un cas reel, elle viendrait d'une fuite de donnees)
hash_cible = hashlib.sha256(b"soleil123").hexdigest()
print("Empreinte a casser :", hash_cible)
dictionnaire = ["123456", "motdepasse", "azerty", "soleil123", "password"]
for candidat in dictionnaire:
if hashlib.sha256(candidat.encode()).hexdigest() == hash_cible:
print("Trouve ! Le mot de passe est :", candidat)
break
else:
print("Aucune correspondance dans ce dictionnaire.") Un dictionnaire de quelques milliers de mots de passe réels (issus de fuites précédentes) suffit à casser une proportion surprenante de mots de passe, en une fraction de seconde. Essaie de changer soleil123 par une valeur absente du dictionnaire : la recherche échoue.
Force brute : essayer toutes les combinaisons possibles
Quand le mot de passe ne figure dans aucun dictionnaire, la force brute essaie systématiquement toutes les combinaisons possibles d’un espace donné, par exemple tous les codes à 4 chiffres :
pour chaque combinaison de 0000 a 9999 :
si hash(combinaison) == empreinte_cible :
trouve ! Efficace sur un petit espace (4 chiffres = 10 000 possibilités, instantané), la force brute devient vite impraticable : un mot de passe de 10 caractères mêlant majuscules, minuscules, chiffres et symboles représente un espace de plusieurs dizaines de milliards de milliards de combinaisons.
Rainbow tables : précalculer une fois, réutiliser indéfiniment
Une rainbow table déplace le coût de calcul avant l’attaque : au lieu de hacher chaque candidat au moment de casser une empreinte précise, elle précalcule à l’avance d’immenses tables reliant des empreintes à leurs entrées, réutilisables ensuite instantanément contre n’importe quelle empreinte du même algorithme.
Info
Le chapitre suivant montre la protection qui rend les rainbow tables inutilisables : le salage. C’est l’une des raisons pour lesquelles cette technique, redoutable dans les années 2000, a perdu beaucoup de son efficacité contre des systèmes correctement configurés aujourd’hui.