Passer au contenu du pied de page
AIDE PYTHON

hashlib Python (Comment ça marche : Un guide pour les développeurs)

Le module hashlib en Python est un outil puissant pour travailler avec des algorithmes de hachage sécurisé et de condensé de message. Ce module fournit une interface standard à de nombreux algorithmes de hachage sécurisés, ce qui en fait un choix polyvalent pour les développeurs ayant besoin d'assurer l'intégrité et la sécurité des données. Later in the article, we will also look into a versatile PDF generation Library from IronSoftware called IronPDF and write a script using both libraries to demonstrate their usage.

Le module hashlib fait partie de la bibliothèque standard de Python, il n'est donc pas nécessaire de l'installer séparément. Il inclut diverses fonctions de hachage cryptographique, telles que MD5, SHA-1, SHA-224, SHA-256, SHA-384, SHA-512 et la série SHA-3. Ces fonctions sont utilisées pour créer des objets de hachage, qui peuvent ensuite être utilisés pour générer des hachages de données.

Fonctionnalités clés

  1. Large gamme d'algorithmes : hashlib prend en charge plusieurs algorithmes de hachage, y compris des anciens comme MD5 et SHA-1 et des plus modernes comme SHA-256 et SHA-3.
  2. Interface simple : Chaque algorithme de hachage a une méthode de constructeur qui retourne un objet de hachage. Cet objet peut être alimenté en données à l'aide de la méthode update et produire la valeur de hachage à l'aide des méthodes digest ou hexdigest.
  3. Sécurité : Bien que certains algorithmes comme MD5 et SHA-1 aient des vulnérabilités connues, hashlib inclut des options plus sécurisées comme SHA-256 et SHA-3.

Installation

hashlib est un module intégré et ne nécessite pas d'installation explicite.

Utilisation de base

Voici un exemple simple de comment utiliser hashlib pour générer un hachage SHA-256 à l'aide du constructeur de hachage hashlib :

import hashlib

# Creating hash objects with SHA-256
hash_object = hashlib.sha256()
# Update the hash object with data
hash_object.update(b'IronPDF from Iron Software is Awesome')
# Get the hexadecimal representation of the hash
hash_hex = hash_object.hexdigest()  # hash_hex is the hexadecimal digest
print(hash_hex)  # Output the hash
# Output: 6fc0c7d6af8eb51f0cd89281db55c6a6b76b5310226fa5af2272a8eb42cc1bfe
import hashlib

# Creating hash objects with SHA-256
hash_object = hashlib.sha256()
# Update the hash object with data
hash_object.update(b'IronPDF from Iron Software is Awesome')
# Get the hexadecimal representation of the hash
hash_hex = hash_object.hexdigest()  # hash_hex is the hexadecimal digest
print(hash_hex)  # Output the hash
# Output: 6fc0c7d6af8eb51f0cd89281db55c6a6b76b5310226fa5af2272a8eb42cc1bfe
PYTHON

Les fonctionnalités avancées

  • Support multithreading : Avec la fonction de hachage cryptographique, hashlib libère le Global Interpreter Lock (GIL) lors du calcul d'un hachage si plus de 2047 octets de données sont fournis en une fois, permettant une meilleure performance dans les applications multithread.
  • Algorithmes de hachage personnalisés : Si la distribution Python de hashlib est liée à une version d'OpenSSL qui fournit des algorithmes supplémentaires, vous pouvez y accéder via la méthode new().

Différents types de hachage avec le module Hashlib

1. Hachage simple

import hashlib

# Simple hashing example
data = b'Hello, World!'
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
# Output: SHA-256 Hash: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
import hashlib

# Simple hashing example
data = b'Hello, World!'
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
# Output: SHA-256 Hash: dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
PYTHON

Le code génère un hachage SHA-256 pour les données d'entrée.

2. Utilisation de différentes tailles de condensés

import hashlib

# Hashing with different digest sizes
data = b'Hello, World!'

# MD5, SHA-256, and SHA-512 hash generation
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()

# Print each hash
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
# Output:
# MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
# SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
# SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
import hashlib

# Hashing with different digest sizes
data = b'Hello, World!'

# MD5, SHA-256, and SHA-512 hash generation
hash_md5 = hashlib.md5(data).hexdigest()
hash_sha256 = hashlib.sha256(data).hexdigest()
hash_sha512 = hashlib.sha512(data).hexdigest()

# Print each hash
print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
# Output:
# MD5 Hash (hex): 65a8e27d8879283831b664bd8b7f0ad4
# SHA-256 Hash (hex): dffd6021bb2bd5b0af676290809ec3a53191dd81c7f70a4b28688a362182986f
# SHA-512 Hash (hex): 374d794a95cdcfd8b35993185fef9ba368f160d8daf432d08ba9f1ed1e5abe6cc69291e0fa2fe0006a52570ef18c19def4e617c33ce52ef0a6e5fbe318cb0387
PYTHON

Le code génère des hachages pour MD5, SHA-256, et SHA-512 en utilisant les données fournies.

3. Hachage avec clé

import hashlib
from hashlib import blake2b

# Keyed hashing example
h = blake2b(key=b'pseudorandom key', digest_size=16)
h.update(b'message data')
print(h.hexdigest())
# Output: 3d363ff7401e02026f4a4687d4863ced
import hashlib
from hashlib import blake2b

# Keyed hashing example
h = blake2b(key=b'pseudorandom key', digest_size=16)
h.update(b'message data')
print(h.hexdigest())
# Output: 3d363ff7401e02026f4a4687d4863ced
PYTHON

Ce code démontre comment créer un hachage avec clé en utilisant l'algorithme Blake2b.

4. Hachage aléatoire

import hashlib
import os

# Randomized hashing example using PBKDF2-HMAC
data = b'Hello, World!'
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
# Output: Randomized Hash (SHA-256): a2a3c1a30a2add1867d55eac97fd9c84dc679691c0f15ae09c01e1bcc63ba47a
import hashlib
import os

# Randomized hashing example using PBKDF2-HMAC
data = b'Hello, World!'
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
# Output: Randomized Hash (SHA-256): a2a3c1a30a2add1867d55eac97fd9c84dc679691c0f15ae09c01e1bcc63ba47a
PYTHON

Ces exemples couvrent le hachage de base en utilisant différentes tailles de condensés. Des ajustements peuvent être faits en fonction de besoins ou de préférences spécifiques, tels que l'utilisation de différents algorithmes ou paramètres.

Applications pratiques

  1. Intégrité des données : Les fonctions de hachage sont généralement utilisées pour confirmer l'intégrité des enregistrements. En comparant le hachage des données originales avec le hachage des données reçues, vous pouvez vous assurer que les données n'ont pas été altérées.
  2. Stockage des mots de passe : Les fonctions de hachage sont souvent utilisées pour stocker les mots de passe de manière sécurisée. Le système stocke le hachage du mot de passe au lieu du mot de passe réel. Lorsque l'utilisateur se connecte, le hachage du mot de passe saisi est comparé au hachage stocké.
  3. Signatures numériques : Les fonctions de hachage sont couramment utilisées pour créer des signatures numériques, qui vérifient l'authenticité et l'intégrité d'un message.

Présentation d'IronPDF

hashlib Python ((Comment ça fonctionne : Un guide pour les développeurs)): Figure 1 - IronPDF pour Python : La bibliothèque PDF Python

IronPDF est une bibliothèque Python puissante pour créer, éditer et signer des PDFs en utilisant HTML, CSS, des images et JavaScript. Elle offre des capacités hautes performances avec une utilisation minimale de la mémoire. Users can generate PDFs from HTML, merge or split PDF documents, extract text and images from PDFs, apply watermarks, rasterize a PDF to image formats like JPEG and PNG, encrypt PDF files, and more. IronPDF offre une large gamme d'opérations sur les PDF.

Caractéristiques clés de IronPDF

Conversion HTML en PDF

Les utilisateurs peuvent convertir des fichiers HTML, des chaînes HTML, et des URLs en PDFs. Par exemple, rendre une page Web en PDF en utilisant le moteur Chrome PDF de IronPDF.

Support multi-plateforme

IronPDF est conçu pour les versions Python 3+ et fonctionne sur Windows, Mac, Linux, ou sur des plateformes Cloud.

IronPDF is also available in .NET, Java, Python, and Node.js.

Édition et signature

The user can set properties, add security with passwords and permissions, and apply digital signatures to PDFs using IronPDF.

Templates de page et réglages

IronPDF vous permet de personnaliser des documents PDF avec des en-têtes, pieds de page, numéros de page, et marges ajustables. Il supporte également des mises en page réactives et des tailles de papier personnalisées.

Conformité aux normes

Le package IronPDF respecte également les normes PDF telles que PDF/A et PDF/UA. Il prend en charge l'encodage de caractères UTF-8 et gère les ressources telles que les images, CSS, et polices.

Générer des documents PDF en utilisant IronPDF et le module HashLib

Prérequis de IronPDF

  1. IronPDF utilise .NET 6.0 comme technologie sous-jacente. Assurez-vous d'avoir installé le runtime .NET 6.0 sur votre système.
  2. Python 3.0+ : Vous devez avoir installé la version 3 de Python ou une version ultérieure.
  3. Pip : Installez le gestionnaire de paquets Python pip pour installer le package IronPDF.

Pour commencer, créons un fichier Python pour ajouter nos scripts. Pour cet exemple, nous utilisons Visual Studio Code comme éditeur de code.

Ouvrez Visual Studio Code et créez un fichier, hashlibDemo.py.

Installez la bibliothèque IronPDF :

pip install ironpdf

Puis ajoutez le code ci-dessous pour démontrer l'utilisation des packages IronPDF et Hashlib Python

import hashlib
import os
from hashlib import blake2b
from ironpdf import *

# Apply your license key
License.LicenseKey = "your key"

# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with hashlib</h1>"
content += "<p>Data for all the below examples = IronPDF from Iron Software is Awesome</p>"
content += "<h2> Simple hashing example</h2>"

# Simple hashing example
data = b'IronPDF from Iron Software is Awesome'
content += "<p>hashlib.sha256(data)</p>"
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
content += "<p>SHA-256 Hash:"+str(hex_dig)+"</p>"

content += "<h2> Hashing with different digest sizes</h2>"
# Hashing with different digest sizes
hash_md5 = hashlib.md5(data).hexdigest()
content += "<p>hashlib.md5(data).hexdigest()</p>"
hash_sha256 = hashlib.sha256(data).hexdigest()
content += "<p>hashlib.sha256(data).hexdigest()</p>"
hash_sha512 = hashlib.sha512(data).hexdigest()
content += "<p>hashlib.sha512(data).hexdigest()</p>"

print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
content += "<p>MD5 Hash (hex):"+str(hash_md5)+"</p>"
content += "<p>SHA-256 Hash (hex):"+str(hash_sha256)+"</p>"
content += "<p>SHA-512 Hash (hex):"+str(hash_sha512)+"</p>"

# Keyed hashing example
content += "<h2> Keyed hashing example</h2>"
h = blake2b(key=b'pseudorandom key', digest_size=16)
content += "<p></p>"
h.update(data)
print(h.hexdigest())
content += "<p>Keyed Hash (hex):"+str(h.hexdigest())+"</p>"

# Randomized hashing example 
content += "<h2> Randomized hashing example </h2>"
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
content += "<p>hashlib.pbkdf2_hmac('sha256', data, salt, 100000)</p>"
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
content += "<p>Randomized Hash (SHA-256):"+str(hex_dig)+"</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)
# Export to a file or Stream
pdf.SaveAs("Demo-hashlib.pdf")
import hashlib
import os
from hashlib import blake2b
from ironpdf import *

# Apply your license key
License.LicenseKey = "your key"

# Create a PDF from a HTML string using Python
content = "<h1>Awesome Iron PDF with hashlib</h1>"
content += "<p>Data for all the below examples = IronPDF from Iron Software is Awesome</p>"
content += "<h2> Simple hashing example</h2>"

# Simple hashing example
data = b'IronPDF from Iron Software is Awesome'
content += "<p>hashlib.sha256(data)</p>"
hash_object = hashlib.sha256(data)
hex_dig = hash_object.hexdigest()
print("SHA-256 Hash:", hex_dig)
content += "<p>SHA-256 Hash:"+str(hex_dig)+"</p>"

content += "<h2> Hashing with different digest sizes</h2>"
# Hashing with different digest sizes
hash_md5 = hashlib.md5(data).hexdigest()
content += "<p>hashlib.md5(data).hexdigest()</p>"
hash_sha256 = hashlib.sha256(data).hexdigest()
content += "<p>hashlib.sha256(data).hexdigest()</p>"
hash_sha512 = hashlib.sha512(data).hexdigest()
content += "<p>hashlib.sha512(data).hexdigest()</p>"

print("MD5 Hash (hex):", hash_md5)
print("SHA-256 Hash (hex):", hash_sha256)
print("SHA-512 Hash (hex):", hash_sha512)
content += "<p>MD5 Hash (hex):"+str(hash_md5)+"</p>"
content += "<p>SHA-256 Hash (hex):"+str(hash_sha256)+"</p>"
content += "<p>SHA-512 Hash (hex):"+str(hash_sha512)+"</p>"

# Keyed hashing example
content += "<h2> Keyed hashing example</h2>"
h = blake2b(key=b'pseudorandom key', digest_size=16)
content += "<p></p>"
h.update(data)
print(h.hexdigest())
content += "<p>Keyed Hash (hex):"+str(h.hexdigest())+"</p>"

# Randomized hashing example 
content += "<h2> Randomized hashing example </h2>"
salt = os.urandom(16)  # Generate a random salt
hash_object = hashlib.pbkdf2_hmac('sha256', data, salt, 100000)
content += "<p>hashlib.pbkdf2_hmac('sha256', data, salt, 100000)</p>"
hex_dig = hash_object.hex()
print("Randomized Hash (SHA-256):", hex_dig)
content += "<p>Randomized Hash (SHA-256):"+str(hex_dig)+"</p>"

# Generate PDF using IronPDF
renderer = ChromePdfRenderer()
pdf = renderer.RenderHtmlAsPdf(content)
# Export to a file or Stream
pdf.SaveAs("Demo-hashlib.pdf")
PYTHON

Explication du code

Le code fourni présente l'utilisation de diverses techniques de hachage en utilisant la bibliothèque hashlib de Python :

  1. Exemple de hachage simple : Calcule le hachage SHA-256 d'une chaîne de données spécifique (b'IronPDF from Iron Software is Awesome').
  2. Hachage avec différentes tailles de condensés : Cette section démontre le hachage en utilisant les algorithmes MD5, SHA-256, et SHA-512 sur la chaîne de données exacte.
  3. Exemple de hachage avec clé : Cet exemple utilise la fonction de hachage blake2b avec une clé spécifiée (b'pseudorandom key') pour effectuer un hachage avec clé sur les données.
  4. Exemple de hachage aléatoire : Utilise l'algorithme PBKDF2-HMAC avec SHA-256 pour générer un hachage aléatoire avec un sel généré aléatoirement.
  5. Génération de PDF : Après avoir démontré les exemples de hachage, le code génère un document PDF en utilisant IronPDF, qui comprend le contenu HTML présentant les exemples de hachage.

Chaque exemple illustre différents aspects du hachage cryptographique, tels que le hachage standard, le hachage avec clé, et les techniques de hachage aléatoire.

Sortie

hashlib Python ((Comment ça fonctionne : Un guide pour les développeurs)): Figure 2 - Exemple de sortie console

PDF

hashlib Python ((Comment ça fonctionne : Un guide pour les développeurs)): Figure 3 - Exemple de sortie PDF utilisant IronPDF

Licence IronPDF

hashlib Python ((Comment ça fonctionne : Un guide pour les développeurs)): Figure 4 - Page de licence IronPDF

IronPDF fonctionne sur la clé de licence Python. IronPDF pour Python propose une clé de licence d'essai gratuite pour permettre aux utilisateurs de tester ses nombreuses fonctionnalités avant achat.

Placez la clé de licence au début du script avant d'utiliser le package IronPDF :

from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
from ironpdf import * 
# Apply your license key
License.LicenseKey = "key"
PYTHON

Conclusion

Le module hashlib est essentiel à la bibliothèque standard de Python, offrant des fonctions de hachage robustes et sécurisées pour diverses applications. Que vous assuriez l'intégrité des données, que vous stockiez des mots de passe de manière sécurisée ou que vous créiez des signatures numériques, hashlib offre les outils nécessaires. D'autre part, IronPDF est une puissante bibliothèque de génération et de manipulation de PDF. Avec ces deux bibliothèques, les développeurs peuvent rapidement générer des hachages et les stocker au format PDF.

Curtis Chau
Rédacteur technique

Curtis Chau détient un baccalauréat en informatique (Université de Carleton) et se spécialise dans le développement front-end avec expertise en Node.js, TypeScript, JavaScript et React. Passionné par la création d'interfaces utilisateur intuitives et esthétiquement plaisantes, Curtis aime travailler avec des frameworks modernes ...

Lire la suite