Introduzione
La criptografia a chiave pubblica, conosciuta anche come criptografia asimmetrica, è un metodo di crittografia che utilizza due chiavi matematicamente correlate, una delle quali è tenuta privata e l'altra è resa pubblica. Questo tutorial mostrerà come utilizzare la criptografia a chiave pubblica per criptare e decrittare un messaggio in Python.
Passaggio 1: Installazione delle librerie necessarie
Per prima cosa, dovrai installare la libreria 'cryptography' di Python. Puoi farlo usando il gestore di pacchetti pip:
pip install cryptography
Passaggio 2: Generazione di una coppia di chiavi
Il primo passaggio nel processo di criptazione è la generazione di una coppia di chiavi (pubblica e privata).
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,
)
public_key = private_key.public_key()
Passaggio 3: Serializzazione della chiave pubblica
La chiave pubblica può essere condivisa con chiunque, quindi può essere necessario serializzarla in un formato condivisibile.
public_pem = public_key.public_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PublicFormat.SubjectPublicKeyInfo,
)
Passaggio 4: Criptazione del messaggio
Ora che abbiamo una chiave pubblica, possiamo usare quella chiave per criptare un messaggio.
from cryptography.hazmat.primitives import hashes
from cryptography.hazmat.primitives.asymmetric import padding
message = b"A secret message"
encrypted = public_key.encrypt(
message,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
Passaggio 5: Decrittazione del messaggio
Infine, possiamo utilizzare la chiave privata per decrittare il messaggio.
original_message = private_key.decrypt(
encrypted,
padding.OAEP(
mgf=padding.MGF1(algorithm=hashes.SHA256()),
algorithm=hashes.SHA256(),
label=None
)
)
print(original_message)
Conclusione
In conclusione, la criptografia a chiave pubblica è una tecnica potente e sicura per garantire che i messaggi possano essere condivisi in modo sicuro tra le parti. Ricorda che la chiave privata deve essere tenuta segreta e protetta, mentre la chiave pubblica può essere liberamente distribuita.