Présentation de la bibliothèque de cryptographie Python
Configurez hazmat et les primitives de haut niveau, puis comprenez la structure de la bibliothèque.
Présentation de la bibliothèque de cryptographie Python est une leçon Cryptology Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Cryptology Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Cryptology Academy comprend 4 leçons au total.
Pourquoi utiliser la bibliothèque cryptography ?
La bibliothèque Python cryptography (développée par PyCA) fournit à la fois une interface Fernet de haut niveau et des primitives hazmat de bas niveau. Elle s'appuie sur OpenSSL et constitue la référence de la communauté pour la cryptographie en production avec Python.
Installation et structure
Installation : pip install cryptography. Deux couches : cryptography.fernet (chiffrement symétrique sûr et fondé sur des choix sécurisés) et cryptography.hazmat.primitives (AES, RSA, EC, fonctions de hachage, HMAC — à utiliser avec précaution).
Fernet : chiffrement symétrique sûr
Fernet utilise AES-128-CBC + HMAC-SHA256 avec un horodatage. Il gère automatiquement la génération du vecteur d'initialisation, le remplissage et le MAC. Il est idéal pour chiffrer des valeurs de configuration, des jetons ou de petits blocs de données.
from cryptography.fernet import Fernet
# Generate a URL-safe base64-encoded 32-byte key
key = Fernet.generate_key()
f = Fernet(key)
token = f.encrypt(b"my secret data")
print("Encrypted:", token[:40], "...")
plain = f.decrypt(token)
print("Decrypted:", plain)Primitives hazmat : fonctions de hachage
La couche hazmat fournit SHA-2, SHA-3, BLAKE2 et bien d'autres fonctions :
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.backends import default_backend
digest = hashes.Hash(hashes.SHA256(), backend=default_backend())
digest.update(b"Hello, ")
digest.update(b"world!")
result = digest.finalize()
print("SHA-256:", result.hex())Primitives hazmat : HMAC
HMAC pour l'authentification des messages :
from cryptography.hazmat.primitives import hmac, hashes
import os
key = os.urandom(32)
h = hmac.HMAC(key, hashes.SHA256())
h.update(b"authenticated message")
signature = h.finalize()
print("HMAC-SHA256:", signature.hex())
# Verify
h2 = hmac.HMAC(key, hashes.SHA256())
h2.update(b"authenticated message")
h2.verify(signature) # raises if invalidSérialisation des clés
Sérialisez les clés en PEM/DER pour les stocker ou les transmettre :
from cryptography.hazmat.primitives.asymmetric import rsa
from cryptography.hazmat.primitives import serialization
private_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
pem = private_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.PKCS8,
encryption_algorithm=serialization.BestAvailableEncryption(b"passphrase")
)
print(pem[:60])Charger des clés depuis PEM
Chargez une clé PEM depuis le disque :
from cryptography.hazmat.primitives.serialization import load_pem_private_key
with open("private_key.pem", "rb") as f:
pem_data = f.read()
key = load_pem_private_key(pem_data, password=b"passphrase")
print("Key loaded, size:", key.key_size, "bits")Gestion des certificats X.509
Analysez et examinez les certificats TLS :
from cryptography import x509
import datetime
with open("cert.pem", "rb") as f:
cert = x509.load_pem_x509_certificate(f.read())
print("Subject:", cert.subject)
print("Issuer:", cert.issuer)
print("Not valid after:", cert.not_valid_after_utc)
print("Serial:", cert.serial_number)Génération d'octets aléatoires
Utilisez toujours os.urandom ou secrets pour générer de l'aléa cryptographique :
import os, secrets
# Cryptographically secure 32-byte key
key = os.urandom(32)
print("Random key:", key.hex())
# secrets module: URL-safe token
token = secrets.token_urlsafe(32)
print("URL-safe token:", token)Éviter les pièges de hazmat
L'API hazmat est appelée « matériaux dangereux » pour une raison. Les erreurs courantes consistent à réutiliser des valeurs uniques, à utiliser le mode ECB, à ignorer les balises d'authentification et à comparer des MAC avec ==. Utilisez les API de haut niveau lorsque c'est possible.
Vérification des connaissances
Qu'apporte le chiffrement Fernet que l'AES-CBC brut n'offre pas ?
Récapitulatif de la leçon
La bibliothèque cryptography comporte deux couches : Fernet, sûr, et hazmat, flexible. Utilisez Fernet pour le chiffrement symétrique, et hazmat pour AES-GCM, RSA, ECDSA et la gestion des certificats. Utilisez toujours os.urandom pour les clés. Évitez les pièges de hazmat : privilégiez les modes authentifiés.
Questions Fréquemment Posées
La leçon « Présentation de la bibliothèque de cryptographie Python » est-elle gratuite ?
Oui — le texte complet de « Présentation de la bibliothèque de cryptographie Python » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Cryptology Academy, passe à CoddyKit PRO. Le cours Cryptology Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Présentation de la bibliothèque de cryptographie Python » ?
Configurez hazmat et les primitives de haut niveau, puis comprenez la structure de la bibliothèque. Tu pratiques Cryptology Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Cryptology Academy ?
Aucune expérience préalable n'est requise. Cryptology Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Présentation de la bibliothèque de cryptographie Python » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Cryptology Academy ?
Oui. Chaque leçon Cryptology Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Présentation de la bibliothèque de cryptographie Python
- Chiffrer et déchiffrer avec AES-GCM en Python
- Paires de clés RSA et ECDSA en Python
- Pièges courants de la cryptographie Python et pratiques sécurisées