[:it]
La chiave pubblica è composta da due numeri (pub,n)–> CONOSCIUTA DA TUTTI
La chiave privata da altri due numeri (pri,n)–> MANTENUTA SEGRETA
Dato un carattere trasformato in decimale lo codifico mediante la seguente operazione:
con mod() la funzione che calcola il resto della divisione.
per decodificarlo uso:
pri e pub devono sottostare alle seguenti due regole:
pri non deve avere fattori in comune con
pub deve soddisfare alla seguente relazione
Ad esempio:
si scelgano
a=17
b=5
si ottiene:
n=85 e z=64
si prenda ad esempio pri=5 e non ha fattori in comune con il 64 e poi risolvendo l’equazione:
si ottiene pub=13.
chiave pubblica (13,85) e chiave privata(5,85)
Applicata al seguente esempio:
Testo | m | ||
E | 5 | 1220703125 | 20 |
U | 19 | 42052983462257059 | 49 |
R | 16 | 4503599627370496 | 16 |
O | 13 | 302875106592253 | 13 |
P | 14 | 793714773254144 | 39 |
A | 1 | 1 | 1 |
Si è spedito il messaggio: 20, 49, 16, 13, 39, 1
Adesso solo chi possiede la chiave privata può decodificare il messaggio:
Testo c | in chiaro | ||
20 | 3200000 | 5 | E |
49 | 282475249 | 19 | U |
16 | 1048576 | 16 | R |
13 | 371293 | 13 | O |
39 | 90224199 | 14 | P |
1 | 1 | 1 | A |
[:]
Non ho capito come viene scelto pri, ho capito che non deve avere fattori in comue con z pertanto se non sbaglio deve essere un primo e allo stesso tempo non deve essere un divisore di z.
Nell’esempio z = 64 e a pri viene assegnato il valore 5 che soddisfa questi requisiti, ma volendo si potrebbe usare anche 7,11,13,17,19,23,29,31,37,41,43,47,53, 59,61.
Ho capito bene?
Per fare maggiore chiarezza a e b devono essere primi mentre “pri” non deve necessariamente essere primo ma soltanto non deve essere un divisore di z. Certo anche altri numeri si sarebbero potute scegliere.