Saltar al contenido

API de cifrado César

Endpoints JSON gratuitos para el cifrado César, ROT13 y Vigenère, sin clave ni registro. Elige uno y envía una petición real desde aquí.

anuncio

Primeros pasos

No necesitas clave ni cuenta. Cada operación es una petición POST con cuerpo JSON, dirigida a una dirección que empieza por:

https://caesar-cipher.com/api/v1

Envía las dos cabeceras: Content-Type: application/json y Accept: application/json. Sin la segunda, un error de validación te redirige en lugar de devolver JSON. El ejemplo de Python necesita el paquete requests.

curl
curl -X POST https://caesar-cipher.com/api/v1/caesar/encrypt \  -H "Content-Type: application/json" \  -H "Accept: application/json" \  -d '{"text": "Hello World!", "shift": 3}'
JavaScript
const response = await fetch("https://caesar-cipher.com/api/v1/caesar/encrypt", {    method: "POST",    headers: { "Content-Type": "application/json", Accept: "application/json" },    body: JSON.stringify({ text: "Hello World!", shift: 3 }),}); const data = await response.json();console.log(data.result);// Khoor Zruog!
Python
import requests response = requests.post(    "https://caesar-cipher.com/api/v1/caesar/encrypt",    json={"text": "Hello World!", "shift": 3},    headers={"Accept": "application/json"},)print(response.json()["result"])# Khoor Zruog!
PHP
<?php $context = stream_context_create(['http' => [    'method' => 'POST',    'header' => "Content-Type: application/json\r\nAccept: application/json\r\n",    'content' => json_encode(['text' => 'Hello World!', 'shift' => 3]),]]); $response = file_get_contents('https://caesar-cipher.com/api/v1/caesar/encrypt', false, $context);echo json_decode($response, true)['result'], "\n";// Khoor Zruog!

Cifrado César

Cifra, descifra o rompe un cifrado César. Para ver cómo funciona el cifrado en sí, prueba la herramienta de cifrado César.

POST /caesar/encrypt

Desplaza cada letra hacia delante.

CampoSignificado
text
obligatorio
El texto, hasta 10.000 caracteres.
shift
obligatorio
Un número entero de -25 a 25.
alphabet basic (por defecto), polish, german, spanish, french o custom.
custom_alphabet Tus propios caracteres, hasta 100. Obligatorio si alphabet es custom.
preserve_case Conservar las minúsculas. Por defecto true; con false el resultado va en mayúsculas.
preserve_non_alpha Conservar los caracteres fuera del alfabeto. Por defecto true; con false se eliminan.
Petición
{    "text": "Hello World!",    "shift": 3}
Respuesta
{    "success": true,    "result": "Khoor Zruog!",    "method": "encrypt",    "shift": 3,    "alphabet": "basic",    "text_length": 12}

POST /caesar/decrypt

Desplaza cada letra hacia atrás. Indica el mismo desplazamiento que se usó al cifrar.

CampoSignificado
text
obligatorio
El texto, hasta 10.000 caracteres.
shift
obligatorio
Un número entero de -25 a 25.
alphabet basic (por defecto), polish, german, spanish, french o custom.
custom_alphabet Tus propios caracteres, hasta 100. Obligatorio si alphabet es custom.
preserve_case Conservar las minúsculas. Por defecto true; con false el resultado va en mayúsculas.
preserve_non_alpha Conservar los caracteres fuera del alfabeto. Por defecto true; con false se eliminan.
Petición
{    "text": "Khoor Zruog!",    "shift": 3}
Respuesta
{    "success": true,    "result": "Hello World!",    "method": "decrypt",    "shift": 3,    "alphabet": "basic",    "text_length": 12}

POST /caesar/solve

Prueba todos los desplazamientos y puntúa los resultados según la frecuencia de letras, sin clave. El texto vuelve en mayúsculas. confidence es una puntuación y no una probabilidad, y los textos cortos pueden engañarla, así que mira también all_solutions, con los cinco mejores resultados.

CampoSignificado
text
obligatorio
El texto, hasta 10.000 caracteres.
alphabet Igual que arriba, pero sin custom.
language Idioma cuyas frecuencias se usan para puntuar: en (por defecto), pl, de, es o fr.
Petición
{    "text": "Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj",    "language": "en"}
Respuesta
{    "success": true,    "best_solution": {        "shift": 3,        "text": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG",        "confidence": 96    },    "all_solutions": [        {            "shift": 3,            "text": "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG",            "score": 95.84        },        {            "shift": 13,            "text": "JXU GKYSA RHEMD VEN ZKCFI ELUH JXU BQPO TEW",            "score": 95.69        },        {            "shift": 14,            "text": "IWT FJXRZ QGDLC UDM YJBEH DKTG IWT APON SDV",            "score": 95.69        },        {            "shift": 19,            "text": "DRO AESMU LBYGX PYH TEWZC YFOB DRO VKJI NYQ",            "score": 95.26        },        {            "shift": 6,            "text": "QEB NRFZH YOLTK CLU GRJMP LSBO QEB IXWV ALD",            "score": 95.12        }    ],    "alphabet": "basic",    "language": "en"}

POST /caesar/bulk

Procesa hasta 100 textos en una petición. Con solve, la puntuación siempre usa las frecuencias del inglés.

CampoSignificado
method
obligatorio
encrypt, decrypt o solve.
items
obligatorio
Hasta 100 objetos, cada uno con text (hasta 1.000 caracteres) y shift (por defecto 3).
alphabet basic (por defecto), polish, german, spanish, french o custom.
custom_alphabet Tus propios caracteres, hasta 100. Obligatorio si alphabet es custom.
Petición
{    "method": "encrypt",    "items": [        {            "text": "Hello",            "shift": 3        },        {            "text": "World",            "shift": 5        }    ]}
Respuesta
{    "success": true,    "method": "encrypt",    "alphabet": "basic",    "count": 2,    "results": [        {            "index": 0,            "original": "Hello",            "result": "Khoor",            "shift": 3        },        {            "index": 1,            "original": "World",            "result": "Btwqi",            "shift": 5        }    ]}

La ñ y otros alfabetos

Los alfabetos con nombre coinciden con los de nuestra herramienta, así que los resultados también. spanish tiene 27 letras, con la ñ. Para cualquier otro conjunto, usa custom.

Petición
{    "text": "El niño",    "shift": 3,    "alphabet": "spanish"}
Respuesta
{    "success": true,    "result": "Hñ plqr",    "method": "encrypt",    "shift": 3,    "alphabet": "spanish",    "text_length": 8}

ROT13

ROT13 no lleva clave, y la misma llamada sirve para cifrar y descifrar. Solo cambian las letras de la A a la Z.

POST /rot13/transform

Aplica ROT13 a un texto.

CampoSignificado
text
obligatorio
El texto, hasta 10.000 caracteres.
preserve_case Conservar las minúsculas. Por defecto true; con false el resultado va en mayúsculas.
preserve_non_alpha Conservar los caracteres fuera del alfabeto. Por defecto true; con false se eliminan.
Petición
{    "text": "Hello World!"}
Respuesta
{    "success": true,    "result": "Uryyb Jbeyq!",    "method": "rot13",    "text_length": 12}

POST /rot13/bulk

Aplica ROT13 a un máximo de 100 textos en una petición.

CampoSignificado
items
obligatorio
Hasta 100 textos de hasta 1.000 caracteres.
preserve_case Conservar las minúsculas. Por defecto true; con false el resultado va en mayúsculas.
preserve_non_alpha Conservar los caracteres fuera del alfabeto. Por defecto true; con false se eliminan.
Petición
{    "items": [        "Hello",        "World"    ]}
Respuesta
{    "success": true,    "method": "rot13",    "count": 2,    "results": [        {            "index": 0,            "original": "Hello",            "result": "Uryyb"        },        {            "index": 1,            "original": "World",            "result": "Jbeyq"        }    ]}

Cifrado Vigenère

La clave solo admite letras de la A a la Z. La ñ del texto no cambia ni gasta una letra de la clave. También puedes ver el cifrado en acción en la herramienta Vigenère.

POST /vigenere/encrypt

Desplaza cada letra según la siguiente letra de la clave.

CampoSignificado
text
obligatorio
El texto, hasta 10.000 caracteres.
key
obligatorio
La palabra clave, hasta 100 letras de la A a la Z.
preserve_case Conservar las minúsculas. Por defecto true; con false el resultado va en mayúsculas.
preserve_non_alpha Conservar los caracteres fuera del alfabeto. Por defecto true; con false se eliminan.
Petición
{    "text": "Hello World!",    "key": "KEY"}
Respuesta
{    "success": true,    "result": "Rijvs Uyvjn!",    "method": "encrypt",    "key_length": 3,    "text_length": 12}

POST /vigenere/decrypt

Deshace el cifrado con la misma clave.

CampoSignificado
text
obligatorio
El texto, hasta 10.000 caracteres.
key
obligatorio
La palabra clave, hasta 100 letras de la A a la Z.
preserve_case Conservar las minúsculas. Por defecto true; con false el resultado va en mayúsculas.
preserve_non_alpha Conservar los caracteres fuera del alfabeto. Por defecto true; con false se eliminan.
Petición
{    "text": "Rijvs Uyvjn!",    "key": "KEY"}
Respuesta
{    "success": true,    "result": "Hello World!",    "method": "decrypt",    "key_length": 3,    "text_length": 12}

POST /vigenere/analyze

Encuentra la clave a partir de la estadística de letras del texto, que debe tener al menos 20 letras. Cuanto más largo, mejor: en nuestras pruebas en español, inglés, polaco, alemán y francés, con 400 caracteres la clave fue correcta en el 96 al 100 % de los intentos, y con 80 solo en el 8 al 58 %. Elige bien el language y comprueba en decrypted_preview si el resultado parece un texto real.

CampoSignificado
text
obligatorio
El texto, hasta 10.000 caracteres.
max_key_length La clave más larga que se busca, de 1 a 20. Por defecto 10.
language Idioma cuyas frecuencias se usan para puntuar: en (por defecto), pl, de, es o fr.
Petición
{    "text": "Tx iof l fdwtsx ocyo qafatrs kupr fvr zpp hrlgtse hexyro mzhb elq qylwefbzq mbq hvahr l wubtwi xwap sz hup faoeo. Rapboc wbrh atog tx ysnyx, nsplyes rgidm ypxfse sep prpr yciph mzbyk fvr lpbvnmif pl l rgaopv ts epjggro xa hrwp fvrx. Lq ofvip hup wfiqprfg gz pacx qsd dnexqfad, xa qbfrf hup pqhgpve, oao xa hutrw oozyf kutgt kbche ocaimf zzwf cseiz wa zvpwalvk ketxubt.",    "language": "en"}
Respuesta
{    "success": true,    "analysis": {        "probable_key_lengths": [            5,            2,            10        ],        "best_key_length": 5,        "ioc_scores": {            "10": 0.0739,            "5": 0.0724,            "6": 0.0464,            "7": 0.0462,            "9": 0.0447        },        "probable_key": "LEMON",        "decrypted_preview": "It was a bright cold morning when the old teacher walked into the classroom and wrote a single line "    },    "language": "en",    "text_length": 295}

POST /vigenere/bulk

Cifra o descifra hasta 100 textos en una petición, cada uno con su clave.

CampoSignificado
method
obligatorio
encrypt o decrypt.
items
obligatorio
Hasta 100 objetos, cada uno con text (hasta 1.000 caracteres) y key.
Petición
{    "method": "encrypt",    "items": [        {            "text": "Hello",            "key": "KEY"        },        {            "text": "World",            "key": "LEMON"        }    ]}
Respuesta
{    "success": true,    "method": "encrypt",    "count": 2,    "results": [        {            "index": 0,            "original": "Hello",            "result": "Rijvs",            "key": "KEY"        },        {            "index": 1,            "original": "World",            "result": "Hsdzq",            "key": "LEMON"        }    ]}

Errores

El estado HTTP indica lo que ha pasado. Un error de validación enumera además cada campo incorrecto.

EstadoSignificado
200La petición ha funcionado.
400Los datos pasaron la validación pero no se pueden usar, por ejemplo un alfabeto propio de menos de 2 caracteres o un texto demasiado corto para analizar.
422Falta un campo o no es válido.
429Demasiadas peticiones. Espera los segundos indicados en Retry-After.
422
{    "message": "The text field is required.",    "errors": {        "text": [            "The text field is required."        ]    }}

Límites

Cada dirección IP puede hacer 60 peticiones por minuto, y las enviadas desde esta página también cuentan. Las respuestas incluyen X-RateLimit-Limit y X-RateLimit-Remaining. Si superas el límite, recibes el estado 429 con Retry-After y X-RateLimit-Reset.

La API acepta peticiones desde cualquier web, de modo que puedes llamarla directamente desde el navegador. Si necesitas un límite mayor, escríbenos.

Preguntas frecuentes

¿Necesito una clave de API?

No. La API es gratuita y no pide clave ni cuenta. Solo se aplica el límite de 60 peticiones por minuto.

¿Sirve para proteger datos reales?

No. Estos cifrados son para aprender y resolver pasatiempos, y se rompen en segundos. Además, tu texto se envía a nuestro servidor para procesarlo, así que no mandes nada privado.

¿API o librería?

La API funciona desde cualquier lenguaje e incluye también ROT13 y Vigenère. En JavaScript y TypeScript, la librería caesar-cipher-js calcula el cifrado César en local, sin peticiones ni límites. Si prefieres escribir el código, sigue el tutorial de Python o JavaScript.