Public Key Cryptography (Criptografia a Chiave Pubblica): Tutorial

7 lug 2023 1 min di lettura
Public Key Cryptography (Criptografia a Chiave Pubblica): Tutorial
Indice dei contenuti

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.

Support us with a

Successivamente, completa il checkout per l'accesso completo a Noviello.it.
Bentornato! Accesso eseguito correttamente.
Ti sei abbonato con successo a Noviello.it.
Successo! Il tuo account è completamente attivato, ora hai accesso a tutti i contenuti.
Operazione riuscita. Le tue informazioni di fatturazione sono state aggiornate.
La tua fatturazione non è stata aggiornata.