Aller au contenu

API du chiffre de César

Des endpoints JSON gratuits pour le chiffre de César, ROT13 et Vigenère, sans clé ni inscription. Choisissez-en un et envoyez une vraie requête depuis cette page.

publicité

Pour commencer

Aucune clé ni compte n’est nécessaire. Chaque opération est une requête POST avec un corps JSON, envoyée à une adresse qui commence par :

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

Envoyez les deux en-têtes : Content-Type: application/json et Accept: application/json. Sans le second, une erreur de validation provoque une redirection au lieu d’une réponse JSON. L’exemple Python a besoin du paquet 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!

Chiffre de César

Chiffrer, déchiffrer ou casser un chiffre de César. Pour voir le chiffre lui-même à l’œuvre, essayez l’outil de chiffre de César.

POST /caesar/encrypt

Décale chaque lettre vers l’avant.

ChampSignification
text
obligatoire
Le texte, jusqu’à 10 000 caractères.
shift
obligatoire
Un nombre entier de -25 à 25.
alphabet basic (par défaut), polish, german, spanish, french ou custom.
custom_alphabet Vos propres caractères, jusqu’à 100. Obligatoire si alphabet vaut custom.
preserve_case Garder les minuscules. Par défaut true ; avec false, le résultat est en majuscules.
preserve_non_alpha Garder les caractères hors de l’alphabet. Par défaut true ; avec false, ils sont supprimés.
Requête
{    "text": "Hello World!",    "shift": 3}
Réponse
{    "success": true,    "result": "Khoor Zruog!",    "method": "encrypt",    "shift": 3,    "alphabet": "basic",    "text_length": 12}

POST /caesar/decrypt

Décale chaque lettre vers l’arrière. Indiquez le même décalage que pour le chiffrement.

ChampSignification
text
obligatoire
Le texte, jusqu’à 10 000 caractères.
shift
obligatoire
Un nombre entier de -25 à 25.
alphabet basic (par défaut), polish, german, spanish, french ou custom.
custom_alphabet Vos propres caractères, jusqu’à 100. Obligatoire si alphabet vaut custom.
preserve_case Garder les minuscules. Par défaut true ; avec false, le résultat est en majuscules.
preserve_non_alpha Garder les caractères hors de l’alphabet. Par défaut true ; avec false, ils sont supprimés.
Requête
{    "text": "Khoor Zruog!",    "shift": 3}
Réponse
{    "success": true,    "result": "Hello World!",    "method": "decrypt",    "shift": 3,    "alphabet": "basic",    "text_length": 12}

POST /caesar/solve

Essaie tous les décalages et note les résultats selon la fréquence des lettres, sans clé. Le texte revient en majuscules. confidence est une note et non une probabilité, et un texte court peut la tromper : regardez donc aussi all_solutions, qui contient les cinq meilleurs résultats.

ChampSignification
text
obligatoire
Le texte, jusqu’à 10 000 caractères.
alphabet Comme ci-dessus, mais sans custom.
language Langue dont les fréquences servent à noter : en (par défaut), pl, de, es ou fr.
Requête
{    "text": "Wkh txlfn eurzq ira mxpsv ryhu wkh odcb grj",    "language": "en"}
Réponse
{    "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

Traite jusqu’à 100 textes en une requête. Avec solve, la note repose toujours sur les fréquences de l’anglais.

ChampSignification
method
obligatoire
encrypt, decrypt ou solve.
items
obligatoire
Jusqu’à 100 objets, chacun avec text (jusqu’à 1 000 caractères) et shift (3 par défaut).
alphabet basic (par défaut), polish, german, spanish, french ou custom.
custom_alphabet Vos propres caractères, jusqu’à 100. Obligatoire si alphabet vaut custom.
Requête
{    "method": "encrypt",    "items": [        {            "text": "Hello",            "shift": 3        },        {            "text": "World",            "shift": 5        }    ]}
Réponse
{    "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        }    ]}

Autres alphabets

Les alphabets nommés correspondent à ceux de notre outil. french compte les 26 lettres de base, et les lettres accentuées restent inchangées. Pour tout autre jeu de caractères, utilisez custom. Cet exemple décale aussi les chiffres :

Requête
{    "text": "Salle 101",    "shift": 3,    "alphabet": "custom",    "custom_alphabet": "abcdefghijklmnopqrstuvwxyz0123456789"}
Réponse
{    "success": true,    "result": "Vdooh 434",    "method": "encrypt",    "shift": 3,    "alphabet": "custom",    "text_length": 9}

ROT13

ROT13 n’a pas de clé, et le même appel chiffre et déchiffre. Seules les lettres de A à Z changent.

POST /rot13/transform

Applique ROT13 à un texte.

ChampSignification
text
obligatoire
Le texte, jusqu’à 10 000 caractères.
preserve_case Garder les minuscules. Par défaut true ; avec false, le résultat est en majuscules.
preserve_non_alpha Garder les caractères hors de l’alphabet. Par défaut true ; avec false, ils sont supprimés.
Requête
{    "text": "Hello World!"}
Réponse
{    "success": true,    "result": "Uryyb Jbeyq!",    "method": "rot13",    "text_length": 12}

POST /rot13/bulk

Applique ROT13 à 100 textes au maximum en une requête.

ChampSignification
items
obligatoire
Jusqu’à 100 textes de 1 000 caractères au maximum.
preserve_case Garder les minuscules. Par défaut true ; avec false, le résultat est en majuscules.
preserve_non_alpha Garder les caractères hors de l’alphabet. Par défaut true ; avec false, ils sont supprimés.
Requête
{    "items": [        "Hello",        "World"    ]}
Réponse
{    "success": true,    "method": "rot13",    "count": 2,    "results": [        {            "index": 0,            "original": "Hello",            "result": "Uryyb"        },        {            "index": 1,            "original": "World",            "result": "Jbeyq"        }    ]}

Chiffre de Vigenère

La clé ne peut contenir que les lettres de A à Z. Les lettres accentuées du texte ne changent pas et ne consomment aucune lettre de la clé. Vous pouvez aussi observer le chiffre dans l’outil Vigenère.

POST /vigenere/encrypt

Décale chaque lettre selon la lettre suivante de la clé.

ChampSignification
text
obligatoire
Le texte, jusqu’à 10 000 caractères.
key
obligatoire
Le mot-clé, jusqu’à 100 lettres de A à Z.
preserve_case Garder les minuscules. Par défaut true ; avec false, le résultat est en majuscules.
preserve_non_alpha Garder les caractères hors de l’alphabet. Par défaut true ; avec false, ils sont supprimés.
Requête
{    "text": "Hello World!",    "key": "KEY"}
Réponse
{    "success": true,    "result": "Rijvs Uyvjn!",    "method": "encrypt",    "key_length": 3,    "text_length": 12}

POST /vigenere/decrypt

Annule le chiffrement avec la même clé.

ChampSignification
text
obligatoire
Le texte, jusqu’à 10 000 caractères.
key
obligatoire
Le mot-clé, jusqu’à 100 lettres de A à Z.
preserve_case Garder les minuscules. Par défaut true ; avec false, le résultat est en majuscules.
preserve_non_alpha Garder les caractères hors de l’alphabet. Par défaut true ; avec false, ils sont supprimés.
Requête
{    "text": "Rijvs Uyvjn!",    "key": "KEY"}
Réponse
{    "success": true,    "result": "Hello World!",    "method": "decrypt",    "key_length": 3,    "text_length": 12}

POST /vigenere/analyze

Retrouve la clé à partir des statistiques de lettres du texte, qui doit compter au moins 20 lettres. Plus il est long, mieux c’est : dans nos tests en français, anglais, polonais, allemand et espagnol, la clé était correcte dans 96 à 100 % des essais à 400 caractères, et dans seulement 8 à 58 % à 80. Choisissez donc le bon language et vérifiez dans decrypted_preview que le résultat ressemble à un vrai texte.

ChampSignification
text
obligatoire
Le texte, jusqu’à 10 000 caractères.
max_key_length La clé la plus longue à chercher, de 1 à 20. Par défaut 10.
language Langue dont les fréquences servent à noter : en (par défaut), pl, de, es ou fr.
Requête
{    "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"}
Réponse
{    "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

Chiffre ou déchiffre jusqu’à 100 textes en une requête, chacun avec sa clé.

ChampSignification
method
obligatoire
encrypt ou decrypt.
items
obligatoire
Jusqu’à 100 objets, chacun avec text (jusqu’à 1 000 caractères) et key.
Requête
{    "method": "encrypt",    "items": [        {            "text": "Hello",            "key": "KEY"        },        {            "text": "World",            "key": "LEMON"        }    ]}
Réponse
{    "success": true,    "method": "encrypt",    "count": 2,    "results": [        {            "index": 0,            "original": "Hello",            "result": "Rijvs",            "key": "KEY"        },        {            "index": 1,            "original": "World",            "result": "Hsdzq",            "key": "LEMON"        }    ]}

Erreurs

Le statut HTTP indique ce qui s’est passé. Une erreur de validation énumère en plus chaque champ incorrect.

StatutSignification
200La requête a réussi.
400Les données ont passé la validation mais restent inutilisables, par exemple un alphabet personnalisé de moins de 2 caractères ou un texte trop court pour l’analyse.
422Un champ manque ou n’est pas valide.
429Trop de requêtes. Attendez le nombre de secondes indiqué dans Retry-After.
422
{    "message": "The text field is required.",    "errors": {        "text": [            "The text field is required."        ]    }}

Limites

Chaque adresse IP peut envoyer 60 requêtes par minute, y compris celles parties de cette page. Les réponses contiennent X-RateLimit-Limit et X-RateLimit-Remaining. Au-delà de la limite, vous recevez le statut 429 avec Retry-After et X-RateLimit-Reset.

L’API accepte les requêtes de n’importe quel site : vous pouvez donc l’appeler directement depuis un navigateur. S’il vous faut une limite plus élevée, écrivez-nous.

Questions fréquentes

Faut-il une clé d’API ?

Non. L’API est gratuite et ne demande ni clé ni compte. Seule la limite de 60 requêtes par minute s’applique.

Puis-je protéger de vraies données avec cette API ?

Non. Ces chiffres servent à apprendre et à résoudre des énigmes, et ils se cassent en quelques secondes. Votre texte part aussi sur notre serveur pour être traité : n’envoyez donc rien de privé.

API ou librairie ?

L’API fonctionne depuis n’importe quel langage et couvre aussi ROT13 et Vigenère. En JavaScript et TypeScript, la librairie caesar-cipher-js calcule le chiffre de César en local, sans requête ni limite. Pour écrire le code vous-même, suivez le tutoriel Python ou JavaScript.