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 -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}'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!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 $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.
| Campo | Significado |
|---|---|
textobligatorio | El texto, hasta 10.000 caracteres. |
shiftobligatorio | 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. |
{ "text": "Hello World!", "shift": 3}{ "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.
| Campo | Significado |
|---|---|
textobligatorio | El texto, hasta 10.000 caracteres. |
shiftobligatorio | 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. |
{ "text": "Khoor Zruog!", "shift": 3}{ "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.
| Campo | Significado |
|---|---|
textobligatorio | 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. |
{ "text": "Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj", "language": "en"}{ "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.
| Campo | Significado |
|---|---|
methodobligatorio | encrypt, decrypt o solve. |
itemsobligatorio | 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. |
{ "method": "encrypt", "items": [ { "text": "Hello", "shift": 3 }, { "text": "World", "shift": 5 } ]}{ "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.
{ "text": "El niño", "shift": 3, "alphabet": "spanish"}{ "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.
| Campo | Significado |
|---|---|
textobligatorio | 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. |
{ "text": "Hello World!"}{ "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.
| Campo | Significado |
|---|---|
itemsobligatorio | 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. |
{ "items": [ "Hello", "World" ]}{ "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.
| Campo | Significado |
|---|---|
textobligatorio | El texto, hasta 10.000 caracteres. |
keyobligatorio | 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. |
{ "text": "Hello World!", "key": "KEY"}{ "success": true, "result": "Rijvs Uyvjn!", "method": "encrypt", "key_length": 3, "text_length": 12}POST /vigenere/decrypt
Deshace el cifrado con la misma clave.
| Campo | Significado |
|---|---|
textobligatorio | El texto, hasta 10.000 caracteres. |
keyobligatorio | 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. |
{ "text": "Rijvs Uyvjn!", "key": "KEY"}{ "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.
| Campo | Significado |
|---|---|
textobligatorio | 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. |
{ "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"}{ "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.
| Campo | Significado |
|---|---|
methodobligatorio | encrypt o decrypt. |
itemsobligatorio | Hasta 100 objetos, cada uno con text (hasta 1.000 caracteres) y key. |
{ "method": "encrypt", "items": [ { "text": "Hello", "key": "KEY" }, { "text": "World", "key": "LEMON" } ]}{ "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.
| Estado | Significado |
|---|---|
200 | La petición ha funcionado. |
400 | Los 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. |
422 | Falta un campo o no es válido. |
429 | Demasiadas peticiones. Espera los segundos indicados en Retry-After. |
{ "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.