hashlib — Calculer des valeurs de hachage pour les données
Le hash hex de 64 caractères de hashlib.sha256, les trois propriétés (déterminisme, effet d'avalanche, sens unique), la détection d'altération, et pourquoi les mots de passe veulent bcrypt / argon2.
hashlib est un module de la bibliothèque standard qui calcule une valeur de hachage de longueur fixe à partir de toute séquence d'octets. L'algorithme phare SHA-256 retourne une chaîne hex de 256 bits = 64 caractères, et est largement utilisé partout où l'on veut confirmer "le contenu est-il le même ?" — vérifications d'intégrité de fichier, signature d'API, identifiants de commit Git, et similaires.
Contrairement à pickle et base64, hashlib est une conversion à sens unique — tu ne peux pas récupérer l'entrée à partir de la sortie. Garde à l'esprit que ce n'est pas pour "sauver et restaurer" mais pour "juste me dire si deux entrées sont identiques ou différentes".
pickle / base64 vs hashlibpickle / base64 sont des conversions bidirectionnelles réversibles utilisées pour "sauver et restaurer" et "conversion de transport". hashlib est une conversion à sens unique non réversible pour les situations où tu as seulement besoin de juger si deux entrées sont identiques ou différentes. Les cas d'usage sont fondamentalement différents — ne les confonds pas.
SHA-256 — Un hash hex de 64 caractères avec trois propriétés
Quatre usages typiques de hashlibVérification d'intégrité de téléchargement / identifiants de commit Git / génération de clés de cache / signature de requête API (HMAC). Le point commun est de juger "le contenu est-il le même ?" via un hash de longueur fixe — ce n'est pas réversible, donc ça ne peut pas remplacer le stockage.Les trois propriétés des fonctions de hachageDéterminisme (même entrée → même sortie), effet d'avalanche (un bit de différence → sortie entièrement différente), et sens unique (impossible de récupérer l'entrée à partir de la sortie). SHA-256 retourne toujours une chaîne hex de 64 caractères, utilisée pour la détection d'altération et les vérifications d'intégrité.
Méthode / Algorithme
Longueur en bits
Usage
hashlib.sha256(b)
256 bits (64 chars hex)
intégrité de fichier / signature d'API (recommandé)
hashlib.sha512(b)
512 bits (128 chars hex)
quand tu veux un hash plus long
hashlib.md5(b)
128 bits (32 chars hex)
des attaques par collision existent — ne pas utiliser pour du nouveau code
.hexdigest()
—
obtenir le hash comme chaîne hex
.digest()
—
obtenir le hash comme bytes bruts
N'utilise pas hashlib seul pour stocker des mots de passe
Si tu stockes les mots de passe utilisateur en les hachant juste avec sha256 ou similaire, ils deviennent vulnérables aux attaques par tables précalculées (rainbow tables). Tu peux te défendre contre cela avec des bibliothèques dédiées qui intègrent salt + key stretching — bcrypt / argon2 / passlib. hashlib convient pour les scénarios "l'entrée est-elle la même ?" comme les vérifications d'intégrité de fichier et la signature d'API.
Calcule le SHA-256 de "Hello, Python!" et confirme que la sortie est toujours une chaîne hex de 64 caractères.
① Importe hashlib et convertis la chaîne "Hello, Python!" en bytes avec UTF-8.
② Obtiens le SHA-256 de ces bytes comme chaîne hex avec hashlib.sha256(...).hexdigest().
③ Affiche la longueur du hash sous la forme Longueur SHA-256 : ◯ (ce devrait être 64).
Éditeur Python
Exécuter le code pour voir le résultat
Vérifier le déterminisme et l'effet d'avalanche
Parmi les traits des fonctions de hachage, "même entrée → même sortie" (déterminisme) et "un caractère de différence → sortie entièrement différente" (l'effet d'avalanche) peuvent être confirmés en comparant deux entrées légèrement différentes. Ces deux propriétés sont précisément ce qui rend les hachages utiles pour les vérifications d'intégrité de fichier et la détection d'altération.
Compare le hash de la Pratique 1 contre une valeur recalculée et une valeur avec le dernier caractère changé.
① Répète les étapes de la Pratique 1 pour mettre le SHA-256 de "Hello, Python!" dans sha.
② Hache la même entrée à nouveau et vérifie si elle est égale à sha — affiche sous la forme Identique au recalcul : True / False.
③ Calcule le hash des bytes avec ! changé en . à la fin et confirme qu'il diffère de sha — affiche sous la forme Différent après un caractère : True / False.
Éditeur Python
Exécuter le code pour voir le résultat
QUIZ
Vérification des connaissances
Répondez à chaque question une par une.
Question 1Quelle est la longueur de la chaîne retournée par hexdigest() de SHA-256 ?
Question 2Que se passe-t-il avec le SHA-256 de la même entrée ?
Question 3Peux-tu récupérer l'entrée originale à partir d'un hash ?
Question 4Quel est le meilleur choix pour stocker les mots de passe utilisateur ?