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 -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!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.
| Champ | Signification |
|---|---|
textobligatoire | Le texte, jusqu’à 10 000 caractères. |
shiftobligatoire | 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. |
{ "text": "Hello World!", "shift": 3}{ "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.
| Champ | Signification |
|---|---|
textobligatoire | Le texte, jusqu’à 10 000 caractères. |
shiftobligatoire | 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. |
{ "text": "Khoor Zruog!", "shift": 3}{ "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.
| Champ | Signification |
|---|---|
textobligatoire | 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. |
{ "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
Traite jusqu’à 100 textes en une requête. Avec solve, la note repose toujours sur les fréquences de l’anglais.
| Champ | Signification |
|---|---|
methodobligatoire | encrypt, decrypt ou solve. |
itemsobligatoire | 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. |
{ "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 } ]}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 :
{ "text": "Salle 101", "shift": 3, "alphabet": "custom", "custom_alphabet": "abcdefghijklmnopqrstuvwxyz0123456789"}{ "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.
| Champ | Signification |
|---|---|
textobligatoire | 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. |
{ "text": "Hello World!"}{ "success": true, "result": "Uryyb Jbeyq!", "method": "rot13", "text_length": 12}POST /rot13/bulk
Applique ROT13 à 100 textes au maximum en une requête.
| Champ | Signification |
|---|---|
itemsobligatoire | 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. |
{ "items": [ "Hello", "World" ]}{ "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é.
| Champ | Signification |
|---|---|
textobligatoire | Le texte, jusqu’à 10 000 caractères. |
keyobligatoire | 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. |
{ "text": "Hello World!", "key": "KEY"}{ "success": true, "result": "Rijvs Uyvjn!", "method": "encrypt", "key_length": 3, "text_length": 12}POST /vigenere/decrypt
Annule le chiffrement avec la même clé.
| Champ | Signification |
|---|---|
textobligatoire | Le texte, jusqu’à 10 000 caractères. |
keyobligatoire | 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. |
{ "text": "Rijvs Uyvjn!", "key": "KEY"}{ "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.
| Champ | Signification |
|---|---|
textobligatoire | 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. |
{ "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
Chiffre ou déchiffre jusqu’à 100 textes en une requête, chacun avec sa clé.
| Champ | Signification |
|---|---|
methodobligatoire | encrypt ou decrypt. |
itemsobligatoire | Jusqu’à 100 objets, chacun avec text (jusqu’à 1 000 caractères) et 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" } ]}Erreurs
Le statut HTTP indique ce qui s’est passé. Une erreur de validation énumère en plus chaque champ incorrect.
| Statut | Signification |
|---|---|
200 | La requête a réussi. |
400 | Les 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. |
422 | Un champ manque ou n’est pas valide. |
429 | Trop de requêtes. Attendez le nombre de secondes indiqué dans Retry-After. |
{ "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.