Claves de juguete: no las uses para proteger nada real. Todo se calcula en tu navegador.

1 Genera tus claves

  1. n = p · q 61 · 53 = 3233 (12 bits)
  2. φ(n) = (p − 1)(q − 1) 60 · 52 = 3120
  3. e, primo con φ(n) 7
  4. d = e⁻¹ mod φ(n) 1783 (comprobación: e · d mod φ(n) = 1)
Cómo se calcula d: Euclides extendido paso a paso

Se divide φ(n) entre e, luego e entre el resto, y así hasta llegar a resto 0. Las columnas s y t cumplen siempre r = s · φ(n) + t · e. En la fila del resto 1, t es el inverso de e (si sale negativo, se le suma φ(n)).

cocienteresto rst
312010
701
44551-445
12-1446
213-1337
20-73120

Resultado: t = -1337, y d = t mod φ(n) = 1783.

Clave pública (n, e)

Se la das a quien quiera escribirte.

(3233, 7)

Clave privada (n, d)

Solo la tienes tú. Sin p y q, calcularla exige factorizar n.

(3233, 1783)

2 Cifra un mensaje

El texto se pasa a bytes (UTF-8) y se agrupan de 1 en 1 para formar números menores que n. Cada número m se cifra con c = me mod n.

bloquem (mensaje)c = me mod n
1721087
21113183
31081877
4971818
Exponenciación rápida del primer bloque

En lugar de multiplicar m por sí mismo e veces, se elevan al cuadrado sucesivamente (m, m², m⁴, m⁸…) y se multiplican solo los que corresponden a los bits 1 de e = 111₂. Son 3 pasos en lugar de 7.

bit de em^(2^i) mod nacumulado
17272
119511453
111601087

El enlace lleva el mensaje cifrado y tu clave pública, pero no la privada. ¿Podrá leerlo quien lo reciba?

3 Descifra

4 Intenta romperla

Quien tenga n y consiga factorizarlo obtiene p y q, y con ellos d. Vamos a probar la fuerza bruta (dividir n entre 3, 5, 7… hasta √n) con claves cada vez más grandes, en tu propio dispositivo.