Module hashlib de Python

Python hashlibCe module est principalement utilisé pour les opérations de hachage.

Le hachage est un algorithme qui associe des données d'entrée de longueur arbitraire à des données de sortie de longueur fixe.

Le hachage est couramment utilisé dans des scénarios tels que la vérification de l'intégrité des données et le stockage sécurisé des mots de passe.

La sortie d'une fonction de hachage est généralement une chaîne de lettres et de chiffres apparemment aléatoires.

Le module hashlib fournit des implémentations d'algorithmes de hachage courants, tels que MD5, SHA-1, SHA-256, etc.

Pour utiliser les fonctions dehashlib, il faut d'abord les importer :

import hashlib 

Afficher le contenu du module hashlib :

Exemple

>>> import hashlib
>>> dir(hashlib)
['__all__', '__block_openssl_constructor', '__builtin_constructor_cache', '__builtins__', '__cached__', '__doc__', '__file__', '__get_builtin_constructor', '__loader__', '__name__', '__package__', '__spec__', '_hashlib', 'algorithms_available', 'algorithms_guaranteed', 'blake2b', 'blake2s', 'md5', 'new', 'pbkdf2_hmac', 'scrypt', 'sha1', 'sha224', 'sha256', 'sha384', 'sha3_224', 'sha3_256', 'sha3_384', 'sha3_512', 'sha512', 'shake_128', 'shake_256']

Voici une introduction à certaines méthodes courantes et algorithmes de hachage du module hashlib :

Méthodes courantes

hashlib.new(name, data=None): Créer un objet de hachage.

Le paramètre name est le nom de l'algorithme de hachage, et le paramètre data correspond aux données à hacher.

Exemple


import hashlib

sha256_hash = hashlib.new('sha256')
sha256_hash.update(b'EXAMPLE')
print(sha256_hash.hexdigest())

Le résultat de sortie est:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

hashlib.md5() / hashlib.sha1() / hashlib.sha256() / ...: Utiliser directement un algorithme de hachage spécifique pour créer un objet de hachage.

Exemple

import hashlib

md5_hash = hashlib.md5(b'EXAMPLE')
print(md5_hash.hexdigest())

Le résultat de sortie est:

18fa661e2a4a7dd6471cc1407290cf6e

Méthodes de l'objet de hachage

update(data): Mettre à jour le contenu du message de l'objet de hachage.

Exemple

import hashlib

sha256_hash = hashlib.sha256()
sha256_hash.update(b'Hello, ')
sha256_hash.update(b'Example!')
print(sha256_hash.hexdigest())

Le résultat de sortie est:

1b56561022276e9a5a8e1cda72e1b39fca6f6074326a74d39f6dfd9540c8ecd7

hexdigest(): Obtenir la valeur de hachage en représentation hexadécimale.

Exemple

import hashlib

md5_hash = hashlib.md5(b'EXAMPLE')
print(md5_hash.hexdigest())

Le résultat de sortie est:

18fa661e2a4a7dd6471cc1407290cf6e

digest(): Obtenir la valeur de hachage en représentation binaire.

Exemple

import hashlib

sha1_hash = hashlib.sha1(b'EXAMPLE')
print(sha1_hash.digest())

Le résultat de sortie est:

b'4\x17\t\xd0\xdb\xc2f3/\x1c\xbc\xd8\xc2_\xd4\xa0T\x12\xb7\xd4'

Algorithmes de hachage courants

MD5

Exemple

import hashlib

md5_hash = hashlib.md5(b'EXAMPLE')
print(md5_hash.hexdigest())

Le résultat de sortie est:

18fa661e2a4a7dd6471cc1407290cf6e

SHA-1

Exemple

import hashlib

sha1_hash = hashlib.sha1(b'EXAMPLE')
print(sha1_hash.hexdigest())

Le résultat de sortie est:

341709d0dbc266332f1cbcd8c25fd4a05412b7d4

SHA-256

Exemple

import hashlib

sha256_hash = hashlib.sha256(b'EXAMPLE')
print(sha256_hash.hexdigest())

Le résultat de sortie est:

673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8

SHA-512

Exemple

import hashlib

sha512_hash = hashlib.sha512(b'EXAMPLE')
print(sha512_hash.hexdigest())

Le résultat de sortie est:

7cfe50493eebd48ee7330c797459c2d0d5ca943bd1c84ad7a0b6783b11cd49d06b4a1dc84ee9ea5e20d0bfedbdb67e716500a20e5870abecea3f32dc8484a811

Dans les applications pratiques, le choix d'un algorithme de hachage approprié dépend d'exigences spécifiques. Il convient de noter que MD5 et SHA-1 sont déjà considérés comme non sécurisés, en particulier dans le domaine de la sécurité. Il est recommandé d'utiliser des algorithmes plus forts, tels que SHA-256 ou SHA-512.

Algorithmes de hachage courants du module hashlib de Python et leurs significations :

Nom de l'algorithmeLongueur du condensé (bits)Longueur de sortie (octets)SécuritéUtilisation
md512816Non sécuriséVérification de l'intégrité des données, stockage de mots de passe, etc.
sha116020Non sécuriséVérification de l'intégrité des données, stockage de mots de passe, etc.
sha22422428FaibleVérification de l'intégrité des données, signatures numériques, etc.
sha25625632MoyenneVérification de l'intégrité des données, signatures numériques, etc.
sha38438448ÉlevéeSignatures numériques, algorithmes de chiffrement, etc.
sha51251264ÉlevéeSignatures numériques, algorithmes de chiffrement, etc.
sha3_22422428ÉlevéeUn membre de la future famille standard SHA-3, adapté aux signatures numériques, etc.
sha3_25625632ÉlevéeUn membre de la future famille standard SHA-3, adapté aux signatures numériques, etc.
sha3_38438448ÉlevéeUn membre de la future famille standard SHA-3, adapté aux signatures numériques, etc.
sha3_51251264ÉlevéeUn membre de la future famille standard SHA-3, adapté aux signatures numériques, etc.
shake_128VariableVariableÉlevéeLa série SHAKE est une version à longueur variable de la famille SHA-3, adaptée à diverses applications.
shake_256VariableVariableÉlevéeLa série SHAKE est une version à longueur variable de la famille SHA-3, adaptée à diverses applications.

Notes :

  • Longueur du condensé (bits) :Indique la longueur du condensé produit par l'algorithme de hachage, en bits.
  • Longueur de sortie (octets) :Indique la longueur du condensé produit par l'algorithme de hachage, en octets.
  • Sécurité :Indique le niveau de sécurité de l'algorithme de hachage, y compris « non sécurisé », « faible », « moyen » et « élevé ». Il s'agit d'une classification générale ; la sécurité spécifique dépend aussi de l'utilisation de l'algorithme et des scénarios d'attaque spécifiques.
Autres extensions