RSA

Hoy voy a escribir aquí el algoritmo RSA (en inglés). Además de para divulgarlo utilizando MathML, para estudiarlo para un examen.
La verdad es que es un algoritmo de cifrado muy usado en el mundo de la informática y conviene tenerlo siempre a mano.
Este algoritmo fue diseñado por Ron Rivest, Adi Shamir y Leonard Adleman.
Rivest, Shamir y Adleman

Probablemente en algunos navegadores este post no se vea bien. Ahora mismo lo estoy viendo con Mozilla Firefox 4.0 Beta 10, pero espero que en un tiempo este lenguaje de marcado se extienda más y se pueda ver correctamente en todos los navegadores, porque me parece interesante.

RSA algorithm

Each user selects a group of p and q (can be different) and they are not public.
n = p + q
Each user calculates
Φ n = Φ p Φ q = p - 1 q - 1
Each user selects a public key e, such that 1 < e < Φ(n) and gfc[e, Φ(n)] is fulfilled.
Each user calculates the private key d=inv[e, Φ(n)]. ed = 1 (mod φ(n))
The group n and the key e are made public.
  • Public key: (e, n)
Key d is kept secret.
  • Private key: (d, n)
Now you can destroy p, q and Φ(n).

Encryption and Decryption

Encryption
C = M e mod n
Decryption
M = C d mod n

Comentarios