Está en la página 1de 2

Algoritmo RSA

El algoritmo RSA se basa en la dificultad que supone la factorización de números primos muy grandes.

Ejemplo de codificación con RSA
Vamos a codificar el mensaje “ADEU” con el algoritmo RSA. El primer paso es elegir dos números primos (que en nuestro caso serán pequeños para facilitar los cálculos). Tomamos: p=3, q=11 y calculamos su producto n=p*q=33. Ahora calcularemos φ(n), que sólo puede ser calculado conociendo la factorización de n. φ(n)=(p-1)(q-1). φ(33)=20. Ahora debemos elegir un número e con las condiciones de que sea primo relativo a n, es decir que no tenga ningún divisor común con n, y que sea menor que φ(n) (φ(n)=20). Escogeremos e=13. Para codificar obtendremos su inverso en módulo 20, es decir, un número que al ser multiplicado por trece dé como resultado otro número que al ser dividido entre 20 tenga como resto 1. El inverso de 13 es 17 (13*17=221; 221/20=11 con resto 1). p=3 q=11 n=33 φ(n)=20 e=13 d=17 Para codificar el mensaje transcribiremos las letras como números: A=1 D=4 E=5 U=21 Codificamos elevando el número a e y calculando el resto que se obtiene al dividir entre φ(n). A=1 -> resto de dividir 1^13 por 20=1 D=4 -> resto de dividir 4^13 por 20=31 E=5 -> resto de dividir 5^13 por 20=26 U=21 -> resto de dividir 21^13 por 20=21 Así queda codificado: ADEU -> 1,31,26,21 Para volver a descodificar el mensaje debemos elevar el número al inverso de e, y volver a calcular su resto al dividir entre 20. Así, al elevar a e y a d, obtendremos el mismo resultado que al elevarlo a e*d, que, al ser inversos en módulo 20, se dará que el resto de elevar a e*d será igual al resto de elevarlo a 1.

Tenemos: 1 -> resto de dividir 1^17 entre 20=1 -> 1=A 31-> resto de dividir 31^17 entre 20=4 -> 4=D 26-> resto de dividir 26^17 entre 20=5 -> 5=E 21-> resto de dividir 21^17 entre 20=21 -> 21=U .