Chaocipher
Cifri WELLDONEISBETTERTHANWELLSAID con i dischi iniziali classici di Byrne e otterrà OAHQHCNYNXTSZJRRHJBYHQKSOUJY: i due alfabeti si rimescolano dopo ogni lettera, quindi ognuna usa una corrispondenza diversa. Gli stessi dischi iniziali decifrano. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- WELLDONEISBETTERTHANWELLSAID
- Sinistra
- HXUCZVAMDSLKPEFJRIGTWOBNYQ
- Destra
- PTLNBQDEOYSFAVZKGJRIHWXUMC
- Modalità di calcolo
- Encrypt
- Risultato
- OAHQHCNYNXTSZJRRHJBYHQKSOUJY
- Input
- WELLDONEISBETTERTHANWELLSAID
- Normalizzato
- WELLDONEISBETTERTHANWELLSAID
- Testo
- OAHQHCNYNXTSZJRRHJBYHQKSOUJY
Il Chaocipher è la macchina polialfabetica classica inventata da John F. Byrne nel 1918 e tenuta segreta per decenni finché l’algoritmo completo fu pubblicato nel 2010. A differenza di una tabella fissa di Cesare o Vigenère, mantiene due alfabeti circolari — il disco sinistro per il testo cifrato e il destro per il chiaro — e dopo ogni lettera entrambi i dischi vengono riordinati con una permutazione rigorosa zenit–nadir. Lei fornisce gli alfabeti iniziali sinistro e destro come permutazioni complete di 26 lettere A–Z, il testo da proteggere o recuperare e una modalità encrypt o decrypt. Il solver individua ogni lettera su un disco, legge la lettera allineata sull’altro, poi ruota e fa scorrere entrambi gli alfabeti affinché la mappatura successiva sia del tutto diversa.
Come funzionano i due alfabeti e le regole zenit–nadir
La cifratura Chaocipher tratta l’alfabeto destro come disco del chiaro e il sinistro come disco del cifrato. Per ogni lettera del chiaro Lei la localizza nell’alfabeto destro corrente e legge la lettera allo stesso indice nell’alfabeto sinistro; quello è il simbolo cifrato di questo passo. Subito dopo entrambi gli alfabeti vengono permutati con la procedura di zenit stazionario del modello di Byrne documentata da Moshe Rubin.
Sul disco sinistro la lettera cifrata appena usata viene ruotata allo zenit (prima posizione), si estrae la lettera in zenit più uno, il blocco da zenit più due fino al nadir (posizione quattordici, indice base zero tredici) scorre di un posto verso lo zenit, e la lettera estratta viene reinserita al nadir.
Sul disco destro la lettera del chiaro viene ruotata allo zenit, l’intero alfabeto ruota ancora di un passo così la lettera successiva resta allo zenit, si estrae la lettera in zenit più due, il blocco da zenit più tre fino al nadir scorre a sinistra e la lettera estratta finisce al nadir. La decifratura usa la ricerca inversa — individui la lettera cifrata sul disco sinistro e legga la lettera allo stesso indice a destra — poi applica esattamente le stesse due permutazioni affinché lo stato della macchina resti sincronizzato.
Poiché ogni passo dipende dalla lettera precedente, una modifica di una sola lettera all’inizio del messaggio si propaga in entrambi gli alfabeti e distrugge le lunghe sequenze di struttura monoalfabetica: per questo l’analisi classica delle frequenze fallisce sul traffico Chaocipher lungo quando i dischi di partenza sono sconosciuti.
Casi d'uso
Write-up CTF e puzzle
Gli autori di challenge verificano i passi di cifratura e decifratura Chaocipher per dischi di partenza pubblicati senza mantenere uno script offline separato.
Domande frequenti
Cos’è il Chaocipher?
Un cifrario polialfabetico classico di John F. Byrne (1918). Due alfabeti allineano ogni lettera, poi entrambi permutano dopo ogni carattere così la sostituzione non resta mai fissa.
Cosa sono gli alfabeti sinistro e destro?
Il disco sinistro fornisce le lettere del cifrato; il destro contiene quelle del chiaro. Ciascuno deve essere una permutazione completa di A–Z (26 lettere uniche). Sono la chiave segreta della macchina.
Cosa succede se un alfabeto è malformato?
Lunghezza errata, lettere duplicate, simboli A–Z mancanti o caratteri non alfabetici nella stringa del disco sono rifiutati con un messaggio chiaro.
Il Chaocipher è gratuito?
Lo strumento del browser è gratuito e gira in locale.
Che fine fanno spazi, punteggiatura e minuscole?
Il testo viene portato in maiuscolo dalla A alla Z e spazi e segni vengono eliminati prima della cifratura. Un testo senza nessuna lettera viene rifiutato, perché non ci sarebbe nulla da elaborare.
Strumenti correlati
Per sviluppatori — accesso via API
Tutto quello che vedi in questa pagina è disponibile anche via API. Questa sezione è per i team che vogliono integrarlo nei propri sistemi; chi non ne ha bisogno può semplicemente usare lo strumento qui sopra.
Endpoint
Autenticazione con Bearer token: un POST mette in coda l'attività e il risultato arriva via webhook o link firmato.
Chiamala dal tuo 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)Esempio di richiesta
{
"text": "WELLDONEISBETTERTHANWELLSAID",
"left": "HXUCZVAMDSLKPEFJRIGTWOBNYQ",
"right": "PTLNBQDEOYSFAVZKGJRIHWXUMC"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.chaocipher",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}L'API è asincrona: ricevi subito un task_id e puoi fare polling fino a 1 richiesta al secondo.
Prezzi
Prezzo pubblicato, senza token né crediti. Se l'attività fallisce, non paghi.
Errori
| HTTP | Codice | Significato |
|---|---|---|
401 | unauthorized | Chiave API mancante o non valida: controlla l'header Authorization. |
402 | insufficient_balance | Credito esaurito: ricarica per continuare a eseguire attività. |
404 | unknown_type | Tipo di attività sconosciuto: controlla il campo type della richiesta. |
429 | rate_limited | Troppe richieste in poco tempo: rallenta e riprova tra qualche secondo. |
Note tecniche
Gli alfabeti malformati — lunghezza errata, lettere duplicate, simboli A–Z mancanti o rifiuti non alfabetici — vengono rifiutati con un errore invalid_input chiaro invece di produrre silenziosamente nonsenso. Il percorso è aritmetica di lettere puramente deterministica, senza chiamate di rete, senza semi casuali e senza dipendenza dall’orologio, così l’esecutore gratuito del browser e l’API prepagata restituiscono lo stesso JSON ogni volta per laboratori, write-up CTF o demo storiche di critto.
Come chiamare l’API e cosa restituisce
Invii un corpo JSON con tre campi stringa obbligatori — text, left e right — più un mode opzionale che per impostazione predefinita è encrypt se omesso. Gli alias accettati per text includono input, value, data, message, plaintext e ciphertext; left accetta anche left_alphabet, left_disk, ct_alphabet e cipher_alphabet; right accetta right_alphabet, right_disk, pt_alphabet e plain_alphabet; mode accetta operation, op, direction e action, e riconosce sinonimi comuni come encode o decode. Entrambi gli alfabeti devono essere esattamente ventisei lettere A–Z uniche dopo aver ignorato separatori opzionali; una stringa corta, una sequenza di duplicati, una lettera mancante o una cifra nella stringa del disco è invalid_input e non viene mai addebitata. Il text è normalizzato solo in A–Z maiuscole; spazi e punteggiatura vengono rimossi e un payload senza lettere è rifiutato. In caso di successo la risposta ripete il text originale e gli alfabeti left e right di partenza, riporta mode come encrypt o decrypt, normalized come il flusso solo di lettere elaborato, result e text come il cifrato o le lettere recuperate, length come il conteggio dei caratteri di uscita, left_final e right_final come gli alfabeti dopo l’ultima permutazione, formula come una breve mnemonica di regole e message come un riepilogo di una riga in inglese. Il prezzo è un $0.002 fisso per richiesta andata a buon fine con unità item.
Consigli pratici, limiti e ricerche correlate
Usi alfabeti di partenza ben rimescolati invece di stringhe A–Z quasi sequenziali, così le prime permutazioni non lasciano lunghe sequenze alfabetiche vicino allo zenit. Questa pagina intercetta chi cerca Chaocipher, cifrario Byrne o strumenti di alfabeti duali evolutivi online; non è AES, non è una cassaforte di password, non è Playfair e non è un semplice Cesare. Preferisca questa capacità quando serve una sostituzione dinamica classica trasparente per didattica o puzzle; se serve segretezza reale, usi un cifrario autenticato moderno. La coppia classica di esposizione left HXUCZVAMDSLKPEFJRIGTWOBNYQ e right PTLNBQDEOYSFAVZKGJRIHWXUMC con chiaro WELLDONEISBETTERTHANWELLSAID è l’autoverifica standard: la cifratura deve dare OAHQHCNYNXTSZJRRHJBYHQKSOUJY, e la decifratura di quel flusso con gli stessi dischi di partenza deve recuperare la frase originale. I controlli andata e ritorno sono il miglior test di sanità quando inventa dischi nuovi: cifri e poi decifri con le stringhe left e right originali, mai con gli alfabeti finali di un’esecuzione precedente. Mantenga i payload sotto il massimo pubblicato di centomila caratteri per limitare la memoria del Worker. Nell’insegnamento, abbini tre esempi: una frase breve con gli alfabeti dell’esposizione Byrne, una decifratura di un cifrato pubblicato e un alfabeto deliberatamente malformato per mostrare il percorso duro invalid_input. Le attività fallite che restituiscono invalid_input non consumano il saldo prepagato, il che tiene economici gli script esplorativi quando i client provano alfabeti rotti.
Casi di integrazione
Laboratori di cifrario classico in classe
Gli studenti impostano a mano gli alfabeti dell’esposizione Byrne, cifrano un breve motto e confrontano il flusso di lettere e i dischi finali con il risultato deterministico dell’API.
Demo di critto storica
Musei e blog mostrano come alfabeti duali evolutivi differiscano dai cifrari monoalfabetici fissi cifrando dal vivo frasi dei visitatori con dischi left e right condivisi.
Domande tecniche
Come resta sincronizzata la decifratura?
La decifratura cerca la lettera cifrata sul disco sinistro e legge la lettera allo stesso indice a destra, poi applica le stesse permutazioni left e right usate in cifratura.