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
>>> 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
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
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
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
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
md5_hash = hashlib.md5(b'EXAMPLE')
print(md5_hash.hexdigest())
Le résultat de sortie est:
18fa661e2a4a7dd6471cc1407290cf6e
SHA-1
Exemple
sha1_hash = hashlib.sha1(b'EXAMPLE')
print(sha1_hash.hexdigest())
Le résultat de sortie est:
341709d0dbc266332f1cbcd8c25fd4a05412b7d4
SHA-256
Exemple
sha256_hash = hashlib.sha256(b'EXAMPLE')
print(sha256_hash.hexdigest())
Le résultat de sortie est:
673dc967d03201db7fe47b7eabd56c47ca5bc694222de303106a5504e5d0daa8
SHA-512
Exemple
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'algorithme | Longueur du condensé (bits) | Longueur de sortie (octets) | Sécurité | Utilisation |
|---|---|---|---|---|
| md5 | 128 | 16 | Non sécurisé | Vérification de l'intégrité des données, stockage de mots de passe, etc. |
| sha1 | 160 | 20 | Non sécurisé | Vérification de l'intégrité des données, stockage de mots de passe, etc. |
| sha224 | 224 | 28 | Faible | Vérification de l'intégrité des données, signatures numériques, etc. |
| sha256 | 256 | 32 | Moyenne | Vérification de l'intégrité des données, signatures numériques, etc. |
| sha384 | 384 | 48 | Élevée | Signatures numériques, algorithmes de chiffrement, etc. |
| sha512 | 512 | 64 | Élevée | Signatures numériques, algorithmes de chiffrement, etc. |
| sha3_224 | 224 | 28 | Élevée | Un membre de la future famille standard SHA-3, adapté aux signatures numériques, etc. |
| sha3_256 | 256 | 32 | Élevée | Un membre de la future famille standard SHA-3, adapté aux signatures numériques, etc. |
| sha3_384 | 384 | 48 | Élevée | Un membre de la future famille standard SHA-3, adapté aux signatures numériques, etc. |
| sha3_512 | 512 | 64 | Élevée | Un membre de la future famille standard SHA-3, adapté aux signatures numériques, etc. |
| shake_128 | Variable | Variable | Élevée | La série SHAKE est une version à longueur variable de la famille SHA-3, adaptée à diverses applications. |
| shake_256 | Variable | Variable | Élevée | La 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.