Apprenez en lisant dans l'ordre

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 hashlib
pickle / base64conversion bidirectionnelleobjet ⇄ bytesbytes ⇄ ASCIIsauver et restaurerhashlibconversion à sens uniquebytes → hashpas réversiblejuger pareil vs différentusageusage
pickle / 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 hashlib
intégrité de fichiercomparer sha256sumID de commit Githash de l'arbre entiergénération clé cachehash d'entrée comme clésignature API (HMAC)empêche l'altération
Vé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 hachage
entrée ASHA-256hash X(64 chars hex)entrée A (encore)SHA-256hash X(toujours identique)entrée A' (1 char diff)SHA-256hash Y(entièrement différent)
Dé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 / AlgorithmeLongueur en bitsUsage
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 stretchingbcrypt / 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 ?