También disponible en: English · Português · Français · العربية
Cifrado César y ROT13
Desplaza texto la cantidad que quieras y rompe un desplazamiento que no conoces, con el ataque entero a la vista y su coste medido.
Qué es el cifrado César
Sustituye cada letra por la que está un número fijo de posiciones más adelante en el alfabeto. Con un desplazamiento de tres, la A pasa a D, la B a E, y la Z da la vuelta hasta C. Descifrar es la misma operación al revés. Se llama así por Julio César, de quien se cuenta que lo usaba en su correspondencia militar, y es el primer cifrado que casi todo el mundo conoce.
ROT13 es lo mismo con un desplazamiento de trece. Se usa en foros y páginas de acertijos para tapar un spoiler o el remate de un chiste a plena vista: no protege nada, solo evita que lo leas sin querer.
Esta herramienta hace las tres cosas: cifrar con el desplazamiento que elijas, descifrar con uno que conozcas, y romper un mensaje cuando no sabes el desplazamiento en absoluto. Todo se ejecuta en tu navegador.
Cómo usar la herramienta
- Elige qué quieres hacer. Cifrar, descifrar o romperlo. Romper no necesita desplazamiento: para eso está el tercer botón.
- Escribe o pega tu texto. Las letras se desplazan; las cifras, la puntuación y los espacios pasan intactos. Las letras acentuadas también se dejan como están, porque el cifrado se define sobre el alfabeto de veintiséis letras y convertir la é en e por lo callado cambiaría tu texto en vez de cifrarlo.
- Lee el resultado o la lista ordenada. En modo de rotura el panel muestra los veintiséis desplazamientos candidatos, puntuados y ordenados, con el mejor arriba. Si la respuesta es correcta, suele saltar a la vista.
Romperlo cuesta treinta letras
Lo que siempre se dice del cifrado César es que el análisis de frecuencias lo rompe. Es cierto y se deja fuera lo interesante, que es la cantidad. Así que la medimos.
El ataque funciona así: prueba los veintiséis desplazamientos. Para cada candidato, cuenta cuántas veces aparece cada letra y compáralo con lo habitual en inglés corriente mediante una puntuación de chi cuadrado. El candidato que mejor encaja es casi siempre el mensaje. No hay astucia ninguna, ni búsqueda: veintiséis candidatos no son un espacio de búsqueda, son una lista que cabe en una pantalla.
Las frecuencias de letras contra las que puntúa esta herramienta se midieron en vez de copiarse: 5 329 782 letras repartidas en doce libros de dominio público. Salen en el orden que todo el mundo recuerda a medias: la e con un 12,85%, luego la t con 9,45%, la a con 7,84%, la o con 7,52%, la n con 7,03% y la i con 7,02%. Recuperar ese orden conocido es la comprobación de que el corpus era prosa normal y no algo raro.
Después, el barrido. Tomando pasajes al azar, cifrando cada uno con un desplazamiento aleatorio y pidiendo al ataque que lo recupere: con 15 letras acierta el 90% de las veces, y con 30 letras el 99%. Treinta letras son menos que esta frase. Cualquier mensaje lo bastante largo para valer la pena enviarlo es lo bastante largo para romperlo, y eso es más útil que decir «solo hay veintiséis claves».
El resultado que decidió la interfaz fue el de los idiomas. Todas las cifras de arriba salieron con la tabla de frecuencias del inglés, y pasamos el mismo barrido sobre texto cifrado en español, portugués y francés sin cambiarla. Todos caen también, solo que necesitan más texto: el 90% de acierto llega hacia las 60 letras en español y las 40 en portugués y francés. Por eso esta herramienta no tiene selector de idioma, y es una decisión medida y no un atajo: las distribuciones de las lenguas europeas en alfabeto latino se parecen lo suficiente para que una sola tabla sirva. (Las cifras del inglés vienen de libros enteros y las otras tres de las páginas traducidas de este mismo sitio, que son más pequeñas, así que toma los números no ingleses como orientativos.)
Limitaciones honestas
Esto no es cifrado de verdad y nada de lo que hay aquí debería usarse para proteger nada. No es una salvedad sobre esta implementación, es lo que el cifrado es: una clave con veintiséis posibilidades, que la herramienta de esta página agota en el tiempo que tarda en dibujar una tabla. Úsalo para acertijos, para enseñar, para tapar un spoiler; nunca para un secreto.
El modo de rotura necesita texto suficiente. Por debajo de unas treinta letras la respuesta de arriba es una conjetura, y la herramienta lo dice en lugar de presentar con aplomo un desplazamiento equivocado. Los mensajes muy cortos de verdad no se pueden romper así, y esa es la única situación en la que un cifrado César aguanta: aguanta porque no hay información suficiente en el mensaje, no porque el cifrado esté haciendo algo.
La puntuación pliega los acentos, de modo que la á cuenta como a, y eso es lo que permite que una sola tabla inglesa puntúe cuatro idiomas. El cifrado en sí no pliega nada: tu ñ vuelve como ñ. Son comportamientos deliberadamente distintos y conviene saber cuál es cuál.
Solo se desplazan las veintiséis letras latinas. El cirílico, el griego, el árabe y todo lo demás pasa sin cambios, así que un cifrado César sobre texto árabe sencillamente no es algo que esta herramienta haga. La longitud de las palabras y la puntuación también sobreviven intactas, y eso explica buena parte de lo mucho que filtra este cifrado: antes incluso de contar letras, la forma de la frase ya está a la vista.
El motor lleva 58 comprobaciones. La que merece nombre enumera los veinticinco desplazamientos no nulos y confirma que exactamente uno se deshace a sí mismo, que es ROT13: un hecho que suele afirmarse y que aquí se verifica. Otra fija el cálculo de chi cuadrado contra una cuenta hecha a mano, después de que un sabotaje deliberado que lo sustituyó por una distancia más burda pasara todas las demás pruebas del archivo. Que ese sabotaje sobreviviera fue informativo en sí mismo: el ataque no depende de un estadístico ingenioso, también funciona con uno bastante tosco.
¿Por qué es gratis?
Desplazar letras y contarlas es aritmética que tu propia máquina hace al instante. No se sube nada, no hay cuenta y no hay nada que marcar con agua.
Si lo que quieres es codificar y no cifrar, las páginas de Base64 y del codificador de URL de este sitio se encargan de eso, también sin subir nada.