Cifrado de Vernam (libreta de un solo uso)

Escribe un mensaje, pulsa el botón para crear una clave aleatoria tan larga como el mensaje y cífralo letra a letra o byte a byte. La misma clave lo descifra. Si la clave se usa una sola vez y se guarda en secreto, el texto cifrado no se puede leer sin ella.

Trabajar con
Acción
Al menos tantas letras como el mensaje. Los demás caracteres de la clave se ignoran.

Caracteres de clave usados: 4.

No uses nunca una clave dos veces: dos mensajes cifrados con la misma libreta pueden leerse juntos. La clave aleatoria se crea en este navegador con crypto.getRandomValues.

Funciona en tu navegador: nada de lo que escribes se envía a ningún sitio.

Cómo se usa

  1. Elige el modo —letras (la libreta clásica) o bytes— y la acción.
  2. En el modo de letras elige el alfabeto; aparece un ejemplo para él. En esta página el predeterminado es el alfabeto español de 27 letras con Ñ.
  3. Escribe el mensaje y pulsa «Nueva clave aleatoria»: crea exactamente los caracteres de clave que necesita el mensaje.
  4. Copia el resultado y la clave. Para descifrar, pulsa el botón bajo el resultado o cambia la acción y pega el texto cifrado con la misma clave.

Cómo funciona

  • Letras: las letras del alfabeto se numeran desde cero (A = 0 … N = 13, Ñ = 14, O = 15 … Z = 26 en español). Cifrar: C = (P + K) mod n; descifrar: P = (C − K) mod n, con n igual a 27, 26 o 33. Las minúsculas pasan a mayúsculas y las vocales con tilde se cifran como sin tilde (Á como A).
  • Bytes: el mensaje se toma en UTF-8, cada byte se combina por XOR con un byte de la clave y el texto cifrado sale en hex. Para descifrar se aplica XOR otra vez y los bytes se leen como UTF-8.
  • La clave debe ser al menos tan larga como el mensaje y se usa desde su primer carácter.

Ejemplo

El mensaje HOLA con la clave XMCK en el alfabeto español:

H O L A
Mensaje 7 15 11 0
Clave X 24 M 12 C 2 K 10
Suma mod 27 31 → 4 27 → 0 13 10
Cifrado E A N K

El resultado es EANK y se usan 4 caracteres de clave. Al descifrar EANK con XMCK vuelve HOLA: E 4 − X 24 = −20 → 7 = H, y así con el resto.

El ejemplo clásico con el alfabeto latino, HELLO con la clave XMCKL, da EQNVZ.

Consejos

  • Guarda la clave separada del texto cifrado: quien tenga ambos puede leer el mensaje.
  • Destruye la clave usada: reutilizarla es lo que hizo caer sistemas reales de libreta de un solo uso.
  • En el modo de bytes las dos partes necesitan la misma clave hex; pásala como texto, no como captura de pantalla.

Preguntas frecuentes

¿Por qué la libreta de un solo uso es irrompible?

Si la clave es realmente aleatoria, tan larga como el mensaje, secreta y se usa una sola vez, todos los textos posibles de esa longitud son igual de probables para un texto cifrado dado. Claude Shannon demostró esta propiedad, el secreto perfecto, en 1949.

Entonces, ¿por qué no se usa en todas partes?

La clave tiene que ser tan larga como todo lo que vayas a enviar y llegar antes al destinatario por un canal seguro. En la práctica es difícil, por eso los sistemas actuales usan claves cortas y cifrados como AES.

¿Qué pasa con los espacios y la puntuación en el modo de letras?

Se copian tal cual y no gastan clave, así que el resultado deja ver la longitud de las palabras. Para un secreto real, quita espacios y signos antes de cifrar, como hacían los usuarios de libretas.

¿Puedo usar la clave del ejemplo?

No: está publicada en esta página y la ve cualquiera. Para un mensaje real pulsa «Nueva clave aleatoria» y no reutilices nunca la clave.

¿Cómo se crea la clave aleatoria?

Con crypto.getRandomValues, el generador de números aleatorios criptográfico del navegador, sin sesgo de módulo. La clave se crea en tu dispositivo y no se envía a ninguna parte.

Más en Desarrollo

Todas las herramientas de la categoría: Desarrollo ·Actualizado el 4 de noviembre de 2026

Opciones de privacidad

Google Analytics nos muestra qué herramientas se usan y si funcionan. Puede usar cookies. Tu elección se guarda en este navegador.