Chaocipher
Chiffrez WELLDONEISBETTERTHANWELLSAID avec les disques de départ classiques de Byrne et vous obtenez OAHQHCNYNXTSZJRRHJBYHQKSOUJY : les deux alphabets se réordonnent après chaque lettre, si bien que chacune suit une correspondance différente. Les mêmes disques déchiffrent. Gratuit dans votre navigateur.
- Gratuit
- Fonctionne dans votre navigateur
- Sans inscription
- Vos données restent sur votre appareil
Lancer gratuitement
Exemple résolu
- Texte
- WELLDONEISBETTERTHANWELLSAID
- Gauche
- HXUCZVAMDSLKPEFJRIGTWOBNYQ
- Droite
- PTLNBQDEOYSFAVZKGJRIHWXUMC
- Mode de calcul
- Encrypt
- Résultat
- OAHQHCNYNXTSZJRRHJBYHQKSOUJY
- Entrée
- WELLDONEISBETTERTHANWELLSAID
- Normalisé
- WELLDONEISBETTERTHANWELLSAID
- Texte
- OAHQHCNYNXTSZJRRHJBYHQKSOUJY
Le Chaocipher est la machine polyalphabétique classique inventée par John F. Byrne en 1918 et restée secrète pendant des décennies jusqu’à la publication complète de l’algorithme en 2010. Contrairement à une table fixe de César ou de Vigenère, il maintient deux alphabets circulaires — le disque gauche pour le texte chiffré et le droit pour le clair — et après chaque lettre les deux disques sont réordonnés par une permutation stricte zénith–nadir. Vous fournissez les alphabets de départ gauche et droit comme permutations complètes de 26 lettres A–Z, le texte à protéger ou à retrouver, et un mode encrypt ou decrypt. Le solveur localise chaque lettre sur un disque, lit la lettre alignée sur l’autre, puis fait tourner et glisser les deux alphabets pour que le mappage suivant soit complètement différent.
Comment fonctionnent les deux alphabets et les règles zénith–nadir
Le chiffrement Chaocipher traite l’alphabet droit comme disque de clair et le gauche comme disque de chiffré. Pour chaque lettre du clair vous la localisez dans l’alphabet droit courant et lisez la lettre du même index dans l’alphabet gauche ; c’est le symbole chiffré de cette étape. Immédiatement après, les deux alphabets sont permutés selon la procédure de zénith stationnaire du modèle de Byrne documentée par Moshe Rubin.
Sur le disque gauche la lettre chiffrée qui vient d’être utilisée est amenée au zénith (première position), la lettre en zénith plus un est extraite, le bloc de zénith plus deux jusqu’au nadir (position quatorze, index base zéro treize) se décale d’une place vers le zénith, et la lettre extraite est réinsérée au nadir.
Sur le disque droit la lettre du clair est amenée au zénith, tout l’alphabet tourne encore d’un cran pour que la lettre suivante soit au zénith, la lettre en zénith plus deux est extraite, le bloc de zénith plus trois jusqu’au nadir se décale à gauche et la lettre extraite tombe au nadir.
Le déchiffrement utilise la recherche inverse — trouvez la lettre chiffrée sur le disque gauche et lisez la lettre de même index à droite — puis applique exactement les deux mêmes permutations pour que l’état de la machine reste synchronisé.
Comme chaque étape dépend de la lettre précédente, un changement d’une seule lettre en début de message se propage dans les deux alphabets et détruit les longues plages de structure monoalphabétique, ce qui explique l’échec de l’analyse fréquentielle classique sur un long trafic Chaocipher lorsque les disques de départ sont inconnus.
Cas d’usage
Write-ups CTF et énigmes
Les auteurs de défis vérifient les étapes de chiffrement et déchiffrement Chaocipher pour des disques de départ publiés sans maintenir un script hors ligne séparé.
Questions fréquentes
Qu’est-ce que le Chaocipher ?
Un chiffre polyalphabétique classique de John F. Byrne (1918). Deux alphabets alignent chaque lettre, puis les deux permutent après chaque caractère, de sorte que la substitution ne reste jamais fixe.
Que sont les alphabets gauche et droit ?
Le disque gauche fournit les lettres du chiffré ; le droit porte celles du clair. Chacun doit être une permutation complète de A–Z (26 lettres uniques). Ils constituent la clé secrète de la machine.
Que se passe-t-il si un alphabet est mal formé ?
Mauvaise longueur, lettres en double, symboles A–Z manquants ou caractères non alphabétiques dans la chaîne du disque sont rejetés avec un message clair.
Le Chaocipher est-il gratuit ?
L’outil navigateur est gratuit et s’exécute en local.
Que deviennent les espaces, la ponctuation et les minuscules ?
Le texte est mis en majuscules de A à Z, et les espaces et signes sont retirés avant le chiffrement. Un texte sans aucune lettre est refusé, puisqu'il n'y aurait rien à traiter.
Outils associés
Pour les développeurs — accès API
Tout sur cette page est disponible par programmation. Cette section s'adresse aux équipes qui veulent l'intégrer à leurs systèmes ; les autres peuvent simplement utiliser l'outil ci-dessus.
Endpoint
Authentification par jeton Bearer : un seul POST met la tâche en file d’attente, et le résultat vous parvient par webhook ou lien signé.
Appeler depuis votre stack
curl -X POST https://api.kit.forhosting.com/enc/chaocipher \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"WELLDONEISBETTERTHANWELLSAID","left":"HXUCZVAMDSLKPEFJRIGTWOBNYQ","right":"PTLNBQDEOYSFAVZKGJRIHWXUMC"}'const res = await fetch("https://api.kit.forhosting.com/enc/chaocipher", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "WELLDONEISBETTERTHANWELLSAID",
"left": "HXUCZVAMDSLKPEFJRIGTWOBNYQ",
"right": "PTLNBQDEOYSFAVZKGJRIHWXUMC"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/chaocipher",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "WELLDONEISBETTERTHANWELLSAID",
"left": "HXUCZVAMDSLKPEFJRIGTWOBNYQ",
"right": "PTLNBQDEOYSFAVZKGJRIHWXUMC"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/chaocipher", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"WELLDONEISBETTERTHANWELLSAID","left":"HXUCZVAMDSLKPEFJRIGTWOBNYQ","right":"PTLNBQDEOYSFAVZKGJRIHWXUMC"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"WELLDONEISBETTERTHANWELLSAID","left":"HXUCZVAMDSLKPEFJRIGTWOBNYQ","right":"PTLNBQDEOYSFAVZKGJRIHWXUMC"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/chaocipher", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Exemple de requête
{
"text": "WELLDONEISBETTERTHANWELLSAID",
"left": "HXUCZVAMDSLKPEFJRIGTWOBNYQ",
"right": "PTLNBQDEOYSFAVZKGJRIHWXUMC"
}Exemple de réponse
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.chaocipher",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L’API est asynchrone : chaque appel renvoie un task_id immédiatement, puis vous interrogez l’état à raison d’une requête par seconde.
Tarifs
Le prix est publié, sans tokens ni crédits. Une tâche qui échoue n’est pas facturée.
Erreurs
| HTTP | Code | Signification |
|---|---|---|
401 | unauthorized | Clé API absente ou invalide : vérifiez l’en-tête Authorization. |
402 | insufficient_balance | Solde insuffisant : rechargez votre compte pour lancer cette tâche. |
404 | unknown_type | Type de tâche inconnu : vérifiez le champ type de votre requête. |
429 | rate_limited | Trop de requêtes : ralentissez la cadence, puis réessayez. |
Notes techniques
Les alphabets mal formés — mauvaise longueur, lettres en double, symboles A–Z manquants ou déchets non alphabétiques — sont rejetés avec une erreur invalid_input claire au lieu de produire silencieusement du non-sens. Le chemin est une arithmétique de lettres purement déterministe, sans appels réseau, sans graines aléatoires et sans dépendance à l’horloge, de sorte que l’exécuteur gratuit du navigateur et l’API prépayée renvoient le même JSON à chaque fois pour les ateliers, les write-ups CTF ou les démos historiques de crypto.
Comment appeler l’API et ce qu’elle renvoie
Le text est normalisé en A–Z majuscules uniquement ; espaces et ponctuation sont retirés, et une charge sans lettres est rejetée. Envoyez un corps JSON avec trois champs chaîne obligatoires — text, left et right — plus un mode optionnel qui vaut encrypt par défaut s’il est omis. Les alias acceptés pour text comprennent input, value, data, message, plaintext et ciphertext ; left accepte aussi left_alphabet, left_disk, ct_alphabet et cipher_alphabet ; right accepte right_alphabet, right_disk, pt_alphabet et plain_alphabet ; mode accepte operation, op, direction et action, et reconnaît des synonymes courants comme encode ou decode. Les deux alphabets doivent être exactement vingt-six lettres A–Z uniques après ignore des séparateurs optionnels ; une chaîne trop courte, une suite de doublons, une lettre manquante ou un chiffre dans la chaîne du disque est invalid_input et n’est jamais facturé. En cas de succès la réponse répète le text d’origine et les alphabets left et right de départ, indique mode comme encrypt ou decrypt, normalized comme le flux lettres seules traité, result et text comme le chiffré ou les lettres retrouvées, length comme le nombre de caractères de sortie, left_final et right_final comme les alphabets après la dernière permutation, formula comme une courte mnémonique de règles et message comme un résumé d’une ligne en anglais. Le tarif est un $0.002 forfaitaire par requête réussie avec unité item.
Conseils pratiques, limites et recherches associées
Utilisez des alphabets de départ bien mélangés plutôt que des chaînes A–Z quasi séquentielles afin que les premières permutations ne laissent pas de longues plages alphabétiques près du zénith. Cette page vise qui cherche Chaocipher, chiffre de Byrne ou outils d’alphabets duals évolutifs en ligne ; ce n’est pas AES, pas un coffre de mots de passe, pas Playfair et pas un simple César. Préférez cette capacité pour une substitution dynamique classique transparente en pédagogie ou en puzzles ; pour un secret réel, utilisez un chiffrement authentifié moderne. La paire d’exposition classique left HXUCZVAMDSLKPEFJRIGTWOBNYQ et right PTLNBQDEOYSFAVZKGJRIHWXUMC avec le clair WELLDONEISBETTERTHANWELLSAID est l’autocontrôle standard : le chiffrement doit donner OAHQHCNYNXTSZJRRHJBYHQKSOUJY, et le déchiffrement de ce flux avec les mêmes disques de départ doit retrouver la phrase d’origine. Les contrôles aller-retour sont le meilleur test de cohérence quand vous inventez de nouveaux disques — chiffrez puis déchiffrez avec les chaînes left et right d’origine, jamais avec les alphabets finaux d’une exécution précédente. Gardez les charges sous le maximum publié de cent mille caractères pour borner la mémoire du Worker. En enseignement, associez trois exemples : une phrase courte avec les alphabets de l’exposition Byrne, un déchiffrement d’un chiffré publié, et un alphabet délibérément mal formé pour montrer la voie dure invalid_input. Les tâches en échec qui renvoient invalid_input ne consomment pas le solde prépayé, ce qui garde les scripts exploratoires peu coûteux lorsque les clients testent des alphabets cassés.
Cas d'intégration
Ateliers de chiffre classique en classe
Les élèves fixent à la main les alphabets de l’exposition Byrne, chiffrent une courte devise, puis comparent le flux de lettres et les disques finaux au résultat déterministe de l’API.
Démos de crypto historique
Musées et blogs montrent en direct comment des alphabets duals évolutifs diffèrent des chiffres monoalphabétiques fixes en chiffrant des phrases de visiteurs avec des disques left et right partagés.
Questions techniques
Comment le déchiffrement reste-t-il synchronisé ?
Le déchiffrement localise la lettre chiffrée sur le disque gauche et lit la lettre de même index à droite, puis applique les mêmes permutations left et right utilisées au chiffrement.