Implementazione dell'algoritmo RSA utilizzando Python
Questo articolo spiega cos'è effettivamente l'algoritmo RSA in crittografia e mostra come implementare l'algoritmo RSA per la crittografia e decrittografia dei dati utilizzando Python. Qui i dati si riferiscono ai numeri. È inoltre possibile utilizzare i dati delle stringhe per la crittografia e la decrittografia utilizzando questo algoritmo.
L'algoritmo RSA è un metodo ampiamente utilizzato per crittografare e decrittografare i messaggi. Prende il nome dai suoi creatori, Ron Rivest , Adi Shamir e Leonard Adleman , che lo svilupparono nel 1977 . L'algoritmo RSA si basa sulla difficoltà di fattorizzare grandi numeri ed è ampiamente considerato un metodo sicuro per crittografare i dati.
Per capire come funziona l'algoritmo RSA, dobbiamo prima comprendere il concetto di chiavi pubbliche e private. Nell'algoritmo RSA, ogni utente ha una coppia di chiavi: una chiave pubblica e una chiave privata. La chiave pubblica viene messa a disposizione di chiunque desideri inviare un messaggio all'utente e viene utilizzata per crittografare il messaggio. La chiave privata è tenuta segreta e viene utilizzata per decifrare il messaggio.
Ecco un esempio di come funziona l'algoritmo RSA:
- Diciamo che Gwen vuole inviare un messaggio a Peter. Cerca la chiave pubblica di Peter e la usa per crittografare il messaggio.
- Il messaggio crittografato viene inviato a Peter.
- Peter usa la sua chiave privata per decifrare il messaggio e leggerlo.
Ecco come funziona in modo più dettagliato:
- Innanzitutto, Gwen e Peter concordano su due grandi numeri primi, p e q.
- Usano questi numeri primi per calcolare un terzo numero, n, che è il prodotto di p e q. Questo numero è reso pubblico.
- Calcolano anche un quarto numero, noto come "toziente", che è il numero di interi positivi minori di n che sono coprimi con n. Anche questo numero è reso pubblico.
- Gwen e Peter generano ciascuno una chiave segreta, nota come "chiave privata". Questa chiave è un numero minore del toziente ed è coprimo rispetto al toziente.
- Quindi usano la loro chiave privata per calcolare la loro chiave pubblica, che è un numero relativamente primo rispetto al paziente. Questa chiave pubblica viene messa a disposizione di chiunque desideri inviare un messaggio all'utente.
L'algoritmo RSA ha diversi vantaggi. È relativamente semplice da implementare ed è ampiamente utilizzato perché è considerato un metodo sicuro per crittografare i dati. Inoltre, l'algoritmo RSA è un algoritmo a "chiave pubblica", il che significa che le chiavi utilizzate per la crittografia e la decrittografia sono diverse. Ciò consente agli utenti di comunicare senza dover scambiare chiavi segrete.
In sintesi, l'algoritmo RSA è un metodo ampiamente utilizzato per crittografare e decrittografare i messaggi. Si basa sulla difficoltà di fattorizzare grandi numeri ed è considerato un metodo sicuro per crittografare i dati. Ha diversi vantaggi, tra cui la sua semplicità e il suo utilizzo di chiavi pubbliche e private.
L'intero algoritmo RSA in parole semplici,
- Seleziona p , q ( p e q entrambi primi e p non uguale a q )
- Calcola n = p * q
- Calcola il toziente, t = (p -1) * (q — 1)
- Seleziona e usando MCD(t, e) = 1 dove 1 < e < t
- Calcola d usando (d * e % t = 1)
- Considera e come chiave pubblica e d come chiave privata.
- Per la crittografia, testo cifrato = (messaggio ^ e) % n (dove, messaggio < n)
- Per la decrittazione, Messaggio = (testo cifrato ^ d) % n
from math import gcd
# defining a function to perform RSA approch
def RSA(p: int, q: int, message: int):
# calculating n
n = p * q
# calculating totient, t
t = (p - 1) * (q - 1)
# selecting public key, e
for i in range(2, t):
if gcd(i, t) == 1:
e = i
break
# selecting private key, d
j = 0
while True:
if (j * e) % t == 1:
d = j
break
j += 1
# performing encryption
ct = (message ** e) % n
print(f"Encrypted message is {ct}")
# performing decryption
mes = (ct ** d) % n
print(f"Decrypted message is {mes}")
# Testcase - 1
RSA(p=53, q=59, message=89)
# Testcase - 2
RSA(p=3, q=7, message=12)
Encrypted message is 1394
Decrypted message is 89
Encrypted message is 3
Decrypted message is 12
Se lo trovi utile, condividilo con i tuoi amici e non dimenticare di seguirlo.
Ci vediamo in un altro blog fino ad allora ciao

![Che cos'è un elenco collegato, comunque? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































