Sistema RSA
Fissiamo un primo p; per es. il piu' piccolo primo dopo 120.
> | p:=nextprime(120); |
Fissiamo un altro primo q; per es. il piu' grande prima di 254.
> | q:=prevprime(254); |
Ora dobbiamo scegliere le chiavi v e w; sappiamo che devono essere tali che v*w = a*(p-1)*(q-1) + 1. Prendiamo allora a:=1 e calcoliamo l.
> | l:=(p-1)*(q-1)+1; |
Fattorizzando l otteniamo una scelta per le due chiavi.
> | ifactor(l); |
Chiave pubblica:
> | v:=17^2; |
Chiave segreta:
> | w:=109; |
Modulo:
> | m:=p*q; |
Supponiamo di voler trasmettere il numero x:=123 crittato.
> | x:=123; |
Trasmettiamo y:
> | y:=x^v; |
Chi decodifica conosce w , conosce m, e riceve y; deve calcolare il resto della divisione di y^w per m:
> | irem(y^w,m); |
Supponiamo ora di ricevere z:=124537289:
> | z:=124537289; |
Il numero decodificato e':
> | irem(z^w,m); |
FINE