Cifrado César y ROT13
Con ROT13, Hello, World! se convierte en Uryyb, Jbeyq!: cada letra avanza 13 posiciones, las mayúsculas siguen siéndolo y la coma, el espacio y la exclamación no se mueven. Elija cualquier desplazamiento, positivo o negativo, y decodifique con el mismo número. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto original
- Hello, World!
- Resultado
- Uryyb, Jbeyq!
- Desplazamiento solicitado
- 13
- Desplazamiento efectivo
- 13
- Operación
- Encode
El cifrado César desplaza letras un número fijo; ROT13 es el caso de desplazamiento 13.
Cómo mueve cada letra un desplazamiento César
El cifrado César mueve cada letra un número fijo de posiciones en el alfabeto y, al llegar a la Z, vuelve a empezar por la A. ROT13 es el caso más conocido, un desplazamiento de 13, y es el valor por defecto. Solo se mueven las letras de la A a la Z: las mayúsculas giran entre mayúsculas y las minúsculas entre minúsculas, de modo que Hello, World! pasa a Uryyb, Jbeyq! con la coma, el espacio y la exclamación en su sitio. Las cifras y el resto de signos tampoco cambian, así que los números siguen legibles y el mensaje conserva su forma.
Desplazamientos, decodificación y vuelta al original
Sirve cualquier número entero, también negativo o mayor que 25. Como el alfabeto tiene 26 letras, un desplazamiento de 26 no cambia nada y uno de −1 equivale a 25; el resultado indica siempre la rotación efectiva aplicada. Decodificar consiste en girar las letras en sentido contrario la misma cantidad, por lo que codificar y luego decodificar con el mismo desplazamiento devuelve siempre el texto original. Por eso resulta útil en clase, para probar desplazamientos rápidamente en un acertijo o para ocultar de forma ligera un spoiler o una respuesta.
Las letras rotan; el resto se conserva
Solo se mueven las letras ASCII. Espacios, dígitos y puntuación pasan sin cambio, de modo que mensajes como Hello, World! conservan comas y espacios.
Mayúsculas y minúsculas se preservan por separado: A gira en A–Z y a en a–z.
Cualquier desplazamiento entero, con la rotación real indicada
El desplazamiento por defecto es 13 (ROT13 clásico). Shift 26 es identidad; −1 equivale a 25.
Decode es la rotación inversa
Decode aplica la rotación opuesta (−shift) y sigue reportando el shift original y su módulo efectivo. Así los viajes de ida y vuelta son deterministas: encode y luego decode con el mismo shift restauran el texto claro.
Qué puede hacer con ella
ROT13 y demos de aula
Muestre la sustitución clásica con un solo desplazamiento y decode instantáneo.
CTF y pasatiempos
Pruebe desplazamientos sobre cifrados sin sorpresas de coma flotante.
Enmascarar mensajes
Oculte ligeramente spoilers o respuestas donde solo hagan falta letras.
Preguntas frecuentes
¿Cuál es el desplazamiento por defecto?
13 — ROT13 clásico — salvo que pase otro entero.
¿Rotan los dígitos?
No. Solo A–Z y a–z; dígitos y puntuación se quedan.
¿Cómo funciona decode?
Rota con −shift y sigue reportando los campos del shift original.
¿Qué hace un desplazamiento de 26 o de −1?
Un desplazamiento de 26 devuelve cada letra a sí misma, así que el texto no cambia. Uno de −1 equivale a 25. Se admite cualquier número entero, y el resultado muestra el desplazamiento efectivo, entre 0 y 25, que se aplicó.
¿Es ROT13 una forma segura de ocultar un mensaje?
Solo de forma ligera. ROT13 oculta un spoiler o la respuesta de un acertijo a una mirada rápida, pero cualquiera puede deshacerlo aplicando de nuevo el mismo desplazamiento. Sirve para enmascarar y para enseñar, no para proteger información privada.
Herramientas relacionadas
Para desarrolladores — acceso por API
Todo lo de esta página está disponible por programación. Esta sección es para equipos que quieren integrarlo en sus sistemas; el resto puede usar la herramienta de arriba sin más.
Endpoint de API
¿Prefiere automatizarlo? Un POST autenticado crea la tarea; el resultado llega por webhook o enlace firmado. La misma capacidad también se ejecuta aquí en la web, por email y desde Telegram — y pronto también desde nuestra app.
Llámela desde su stack
curl -X POST https://api.kit.forhosting.com/text/caesar-cipher \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"Hello, World!"}'const res = await fetch("https://api.kit.forhosting.com/text/caesar-cipher", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "Hello, World!"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/text/caesar-cipher",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "Hello, World!"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/text/caesar-cipher", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"Hello, World!"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"Hello, World!"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/text/caesar-cipher", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Ejemplo de solicitud
{
"text": "Hello, World!"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "text.caesar_cipher",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}La API es asíncrona: la llamada devuelve un task_id al instante y el resultado llega por webhook. El polling está limitado a 1 req/s por tarea.
Precio
Precio publicado — sin tokens ni créditos inventados. Una tarea fallida no se cobra.
Límites
max_text_chars | 100000 |
Errores
| HTTP | Código | Significado |
|---|---|---|
401 | unauthorized | API key ausente o inválida. |
402 | insufficient_balance | El saldo no cubre el precio de la tarea. |
404 | unknown_type | El tipo de tarea no existe. |
429 | rate_limited | Demasiadas peticiones. Use el webhook en vez de sondear. |
Notas técnicas
Esta herramienta solo rota A–Z y a–z, deja dígitos y puntuación intactos, informa el desplazamiento efectivo módulo 26 y coincide entre el navegador gratis y el API en cada carácter.
Cualquier entero de desplazamiento, con shift_effective
Se admiten valores negativos y mayores que 25; la rotación efectiva es siempre ((shift % 26) + 26) % 26 y se devuelve como shift_effective a partir del shift de entrada, también en decode.
Errores tipados y límites de tamaño
El texto es obligatorio y tiene tope de 100000 caracteres.
Casos de integración
Comprobaciones automáticas
Fije ida y vuelta encode/decode en fixtures de CI.
Preguntas técnicas
¿Qué es shift_effective?
El shift de entrada reducido a 0…25 con módulo 26.
¿Puede ser negativo el shift?
Sí. −1 equivale a efectivo 25.
¿Es gratis en el navegador?
Sí en escritorio y móvil. La app nativa usa el API a $0.002.