Cifra escítala
Con 5 columnas, HELLOWORLD se convierte en HWEOLRLLOD: el texto se escribe fila a fila en una cuadrícula, como una tira enrollada en un bastón, y se lee columna a columna. El mismo número de columnas lo deshace y no se pierde ningún carácter. Gratis en su navegador.
- Gratis
- Funciona en su navegador
- Sin registro
- Sus datos no salen de su equipo
Ejecutar — gratis
Ejemplo resuelto
- Texto
- HELLOWORLD
- Columnas
- 5
- Modo de cálculo
- Encrypt
- Texto
- HWEOLRLLOD
- Longitud
- 10
La escítala es una cifra de transposición clásica de la antigua Grecia: se enrolla una tira de escritura alrededor de una vara de diámetro fijo, se escribe a lo largo de la vara y luego se desenrolla la tira, de modo que las letras quedan revueltas en un orden por columnas. Esta capacidad implementa esa idea como una transposición de columnas determinista: usted aporta el texto, una clave entera de columnas (el diámetro) y el modo cifrar o descifrar. El cifrado escribe los caracteres en una rejilla fila a fila y los lee hacia abajo por cada columna; el descifrado invierte el mismo mapa con la misma clave, de forma que se conservan la longitud y todos los caracteres, incluidos espacios y signos de puntuación.
Cómo funciona la transposición de la escítala
Una escítala no es una cifra de sustitución: cada letra sigue siendo ella misma; solo cambia el orden. Piense en la clave como el número de columnas de un cilindro. En el modo cifrar, el motor coloca su cadena en una disposición rectangular rellenada de izquierda a derecha y de arriba abajo, con tantas columnas como haya elegido.
Las últimas filas incompletas dejan celdas vacías que nunca se rellenan ni se emiten, de modo que la longitud del texto cifrado siempre coincide con la del texto en claro y no se inventa ningún carácter de relleno. Al leer hacia abajo la columna cero, luego la columna uno, y así sucesivamente, se obtiene el texto cifrado: la misma mezcla que vería si desenrollara una tira escrita alrededor de una vara de ese diámetro.
El modo descifrar reconstruye esa disposición por columnas a partir del texto cifrado y vuelve a leer de izquierda a derecha, restaurando la cadena original siempre que se use el mismo valor de columnas. Como el mapa es una permutación pura de índices, la operación es determinista entre entornos de ejecución, sin aleatoriedad, sin relojes ni consultas de red, y segura para pruebas de referencia.
Elegir una clave de columnas equivocada al descifrar da una permutación incorrecta, no un fallo, que es justo lo que el alumnado espera cuando prueba diámetros cercanos.
Uso en clase, en CTF y en producto — y coste
Los cursos de historia y criptografía usan la escítala para introducir la transposición antes que la sustitución y las cifras modernas; en el laboratorio se puede mostrar que conocer el diámetro recupera el mensaje mientras que los diámetros equivocados no. Quienes crean retos de captura la bandera esconden banderas cortas bajo una clave de columnas y verifican las soluciones contra esta misma rutina determinista. Quienes redactan documentación incrustan pares de cifrar y descifrar en tutoriales sin mantener un guion aparte fuera de línea.
Esa paridad mantiene alineadas las soluciones de los deberes, los valores de referencia de CI y las demostraciones de producción. No trate la escítala como confidencialidad para secretos reales —es una herramienta didáctica y de juego—, pero sí trate la clave de columnas como el parámetro secreto del sistema de juguete.
Qué puede hacer con ella
Prácticas de criptografía en clase
Demuestre la transposición clásica: el alumnado cifra una frase con una clave de columnas y luego la recupera descifrando con el mismo diámetro.
Autoría de CTF y de acertijos
Esconda cadenas cortas de reto bajo una clave de escítala y verifique los envíos de quienes las resuelven contra el mismo par cifrar/descifrar determinista.
Documentación y demostraciones interactivas
Genere ejemplos estables de texto cifrado para tutoriales y zonas de juego de cifras clásicas sin mantener a mano tablas de permutación.
Preguntas frecuentes
¿Qué es la cifra escítala?
Una cifra de transposición clásica: los caracteres conservan su valor pero cambian de posición según una clave de columnas (diámetro). Esta herramienta implementa el modelo estándar de escribir por filas y leer por columnas.
¿Por qué las columnas deben ser al menos 2?
Un diámetro de una sola columna deja el texto en el mismo orden, así que no es una clave de escítala con sentido.
¿El descifrado necesita el mismo valor de columnas?
Sí. Cifrar y descifrar usan la misma clave entera. Un valor de columnas distinto aplica una permutación distinta y no restaurará el texto original.
¿Se conservan los espacios y la puntuación?
Sí. Todos los caracteres de la cadena participan en la transposición. No se recorta, ni se pasa a minúsculas, ni se rellena nada.
¿Cuánto cuesta?
La página interactiva se ejecuta gratis en su navegador.
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/enc/scytale \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"HELLOWORLD","columns":5,"mode":"encrypt"}'const res = await fetch("https://api.kit.forhosting.com/enc/scytale", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "HELLOWORLD",
"columns": 5,
"mode": "encrypt"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/scytale",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "HELLOWORLD",
"columns": 5,
"mode": "encrypt"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/scytale", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"HELLOWORLD","columns":5,"mode":"encrypt"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"HELLOWORLD","columns":5,"mode":"encrypt"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/scytale", 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": "HELLOWORLD",
"columns": 5,
"mode": "encrypt"
}Ejemplo de respuesta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.scytale",
"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.
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
Menos de dos columnas se rechaza con invalid_input, porque una sola columna deja el mensaje sin cambios y no es un diámetro de escítala con sentido. Use la herramienta gratis en esta página, o invoque el mismo algoritmo puro por API a $0.002 por solicitud para demostraciones en clase, ayudantes de CTF y ejemplos de documentación que deban seguir siendo reproducibles.
Cómo funciona la transposición de la escítala
Una o cero columnas copiarían el texto sin cambios o quedarían indefinidas como diámetro; por eso esta API exige un entero de al menos dos y devuelve invalid_input cuando se incumple esa regla.
Llamar a la API y leer el resultado
Los espacios, saltos de línea y signos de puntuación atraviesan la rejilla como cualquier otro carácter; no se recorta ni se pasa a minúsculas nada, lo que mantiene intactas las demostraciones estilo contraseña y las cadenas multilínea de clase. Haga el viaje de ida y vuelta cifrando con un valor de columnas dado y descifrando con el mismo valor; claves distintas no restaurarán el original. El texto vacío está permitido y devuelve un resultado vacío con longitud cero. Envíe tres campos: text (la cadena en claro o cifrada), columns (diámetro entero, mínimo dos) y mode (encrypt o decrypt; se aceptan alias cortos como enc y dec). Un text ausente, un text que no sea cadena, un valor de columns ausente o no entero, columns menor que dos, o un modo desconocido fallan todos con invalid_input y un mensaje que nombra el problema, para que formularios y guiones puedan mostrar una respuesta corregible. Si tiene éxito, el JSON incluye text (la cadena transformada), mode (encrypt o decrypt canónico), columns (la clave entera que usó) y length (recuento de caracteres del resultado, igual a la longitud de entrada). Prefiera este endpoint cuando la intención de búsqueda sea específicamente escítala o transposición clásica con vara; las herramientas AEAD modernas responden a otra intención y a otro modelo de amenaza.
Uso en clase, en CTF y en producto — y coste
Los equipos de producto que publican zonas de juego de cifras clásicas pueden llamar a la API para comprobaciones del lado del servidor mientras las visitas experimentan gratis en el navegador. Como el trabajo es puro indexado de cadenas en tiempo de análisis, sin servicio externo, la latencia se mantiene baja y el modelo de coste es sencillo: pruebe conversiones ilimitadas gratis en esta página y luego automatice entradas idénticas a $0.002 por elemento correcto con saldo prepago del KIT cuando integre desde guiones o servicios de backend. Asigne las etiquetas de la interfaz a cifrar y descifrar, valide columnas en el cliente con el mismo mínimo de dos y muestre los mensajes de invalid_input junto al control del diámetro cuando el usuario envíe una sola columna o un valor no entero.