Panoramica della libreria Python cryptography
Configuri i primitivi hazmat e di alto livello e comprenda la struttura della libreria.
Panoramica della libreria Python cryptography è una lezione Cryptology Academy gratuita su CoddyKit. Questa è la lezione 1 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Cryptology Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Cryptology Academy include 4 lezioni in totale.
Perché usare la libreria cryptography?
La libreria Python cryptography (di PyCA) fornisce sia un'interfaccia Fernet di alto livello sia primitive hazmat di basso livello. Utilizza OpenSSL ed è lo standard della community per la crittografia in produzione con Python.
Installazione e struttura
Installazione: pip install cryptography. Due livelli: cryptography.fernet (crittografia simmetrica sicura e basata su scelte predefinite) e cryptography.hazmat.primitives (AES, RSA, EC, hash, HMAC — da usare con cautela).
Fernet: crittografia simmetrica sicura
Fernet utilizza AES-128-CBC + HMAC-SHA256 con un timestamp. Gestisce automaticamente la generazione dell'IV, il padding e il MAC. È perfetto per crittografare valori di configurazione, token o piccoli blob.
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)Primitive Hazmat: hash
Il livello hazmat fornisce SHA-2, SHA-3, BLAKE2 e altri algoritmi:
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())Primitive Hazmat: HMAC
HMAC per l'autenticazione dei messaggi:
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 invalidSerializzazione delle chiavi
Serializzi le chiavi in formato PEM/DER per archiviarle o trasmetterle:
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])Caricamento delle chiavi da PEM
Carichi una chiave PEM dal disco:
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")Gestione dei certificati X.509
Analizzi e ispezioni i certificati 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)Generazione di byte casuali
Utilizzi sempre os.urandom o secrets per generare casualità crittografica:
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)Come evitare le insidie di Hazmat
L'API hazmat si chiama "Hazardous Materials" per un motivo. Tra gli errori più comuni: riutilizzare i nonce, utilizzare la modalità ECB, saltare i tag di autenticazione e confrontare i MAC con ==. Quando possibile, utilizzi le API di alto livello.
Verifica delle conoscenze
Che cosa offre la crittografia Fernet che il solo AES-CBC grezzo non offre?
Riepilogo della lezione
La libreria cryptography ha due livelli: Fernet, sicuro, e hazmat, flessibile. Utilizzi Fernet per la crittografia simmetrica e hazmat per AES-GCM, RSA, ECDSA e la gestione dei certificati. Utilizzi sempre os.urandom per le chiavi. Eviti le insidie di hazmat e preferisca le modalità autenticate.
Domande Frequenti
La lezione «Panoramica della libreria Python cryptography» è gratuita?
Sì — il testo completo di «Panoramica della libreria Python cryptography» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Cryptology Academy, passa a CoddyKit PRO. Il corso Cryptology Academy include 4 lezioni in totale.
Cosa imparerò in «Panoramica della libreria Python cryptography»?
Configuri i primitivi hazmat e di alto livello e comprenda la struttura della libreria. Eserciti Cryptology Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Cryptology Academy?
Non è richiesta alcuna esperienza precedente. Cryptology Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 1 di 4.
Quanto tempo richiede la lezione «Panoramica della libreria Python cryptography»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Cryptology Academy?
Sì. Ogni lezione Cryptology Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Panoramica della libreria Python cryptography
- Cifratura e decifratura AES-GCM in Python
- Coppie di chiavi RSA ed ECDSA in Python
- Errori comuni nella crittografia Python e pattern sicuri