Cifrario rail fence
Scriva il messaggio a zigzag su più binari e lo legga riga per riga: con 3 binari WEAREDISCOVEREDFLEEATONCE diventa WECRLTEERDSOEEFEAOCAIVDEN, e lo stesso numero di binari lo rimette in ordine. Adatto a enigmi e lezioni, non ai segreti. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- WEAREDISCOVEREDFLEEATONCE
- Numero di binari
- 3
- Modalità di calcolo
- Encrypt
- Risultato
- WECRLTEERDSOEEFEAOCAIVDEN
- Lunghezza
- 25
Il cifrario rail fence è un cifrario classico di trasposizione che riordina i caratteri scrivendoli a zigzag verso il basso e verso l'alto su un numero fisso di binari, poi leggendo ogni binario da sinistra a destra. Con due o più binari il messaggio si confonde senza cambiare l'identità delle lettere, così spazi e punteggiatura si spostano con lo zigzag invece di essere sostituiti. Si usa in libri di enigmi, riscaldamenti CTF, demo di classe sulla trasposizione rispetto alla sostituzione e leggera offuscazione di spoiler quando un cifrario moderno a chiave è eccessivo. Questa capacità accetta testo non vuoto, un intero di binari di almeno due e una modalità opzionale di cifratura o decifratura; restituisce la stringa trasformata con la modalità normalizzata, i binari usati e la lunghezza.
Come funziona lo zigzag sui binari
Il rail fence è un cifrario di trasposizione: non cambia le lettere, cambia solo il loro ordine. Immagini alcune righe orizzontali, i binari. Il primo carattere va sul binario più alto, il secondo su quello sotto e così via fino all'ultimo; poi il percorso risale e riscende, finché tutto il messaggio è stato distribuito. Il testo cifrato si ottiene leggendo ogni binario da sinistra a destra, dal primo all'ultimo. Con 3 binari, WEAREDISCOVEREDFLEEATONCE diventa WECRLTEERDSOEEFEAOCAIVDEN, sempre di 25 caratteri. Spazi, cifre, punteggiatura e lettere non latine seguono lo stesso percorso delle altre.
Quando usarlo ed errori da evitare
Il rail fence è utile per giochi enigmistici, esercizi di riscaldamento nelle gare di crittografia e lezioni che mettono a confronto trasposizione e sostituzione. Non va usato per proteggere password o dati personali: chi conosce il numero di binari lo inverte in pochi istanti. Per decifrare serve lo stesso numero di binari usato per cifrare; con un numero diverso si ottiene un'altra permutazione che non corrisponde al messaggio originale. Servono almeno 2 binari, perché con uno solo il testo resterebbe identico, e non più di 256.
Casi d'uso
Riscaldamenti di trasposizione per enigmi e CTF
Nasconda indizi o flag di sfida con un numero di binari noto, poi decifri con gli stessi binari quando chi risolve ha bisogno della rivelazione senza installare librerie crypto.
Demo di trasposizione in classe
I docenti contrastano il riordino a zigzag con i cifrari di sostituzione: cifrino, decifrino e mostrino che le lettere restano uguali mentre cambia l'ordine.
Domande frequenti
Come si cifra un testo con il cifrario rail fence?
Il campo result della risposta contiene il cifrato a zigzag.
Come si decifra un testo rail-fence?
Invii il cifrato come text, lo stesso valore rails usato per cifrare e mode decrypt (o decode). Il result è il testo in chiaro ricostruito quando il numero di binari corrisponde.
Cosa succede con meno di due binari?
Il prodotto rail-fence richiede almeno due binari; un solo binario lascerebbe il testo invariato.
Lo strumento rail fence è gratuito?
Lo strumento del browser gira gratis sul Suo dispositivo.
Il rail fence è una cifratura sicura?
No. Il rail fence è una trasposizione classica per enigmi e didattica, non per la riservatezza. Non lo usi mai per password o dati sensibili.
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/rail-fence \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"WEAREDISCOVEREDFLEEATONCE","rails":3}'const res = await fetch("https://api.kit.forhosting.com/enc/rail-fence", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "WEAREDISCOVEREDFLEEATONCE",
"rails": 3
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/rail-fence",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "WEAREDISCOVEREDFLEEATONCE",
"rails": 3
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/rail-fence", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"WEAREDISCOVEREDFLEEATONCE","rails":3}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"WEAREDISCOVEREDFLEEATONCE","rails":3}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/rail-fence", 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": "WEAREDISCOVEREDFLEEATONCE",
"rails": 3
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.rail_fence",
"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
Meno di due binari o testo vuoto falliscono con invalid_input.
Come funziona lo zigzag rail-fence e cosa contiene la risposta
La cifratura scrive ogni carattere successivo su binari successivi mentre il percorso scende dal binario superiore a quello inferiore e poi risale, ripetendo finché tutto il messaggio è collocato. La lettura concatena ogni carattere del primo binario da sinistra a destra, poi il secondo e così via fino all'ultimo; quella concatenazione è il testo cifrato. La modalità opzionale predefinita è encrypt; encrypt e encode eseguono lo zigzag in avanti, mentre decrypt e decode lo invertiscono. La decifratura ricostruisce lo stesso schema di occupazione per la lunghezza e il numero di binari noti, riempie ogni binario con la porzione successiva del cifrato e ripercorre lo zigzag per recuperare l'ordine originale. Invii JSON con il campo stringa obbligatorio text impostato su un messaggio non vuoto e l'intero obbligatorio rails di almeno due; gli alias input, value, s e message valgono per il corpo del testo, mentre key, n e num_rails alias il conteggio dei binari quando moduli più vecchi riutilizzano quei nomi. In caso di successo la risposta include result con il testo trasformato, mode normalizzato a encrypt o decrypt, rails che ripete l'intero usato, length uguale al conteggio dei caratteri di ingresso e method uguale a rail_fence così i client possono ramificare senza indovinare le forme. Ingressi identici producono sempre JSON identico perché il percorso è pura aritmetica di indici, senza rete, senza seme casuale e senza orologio.
Regole di validazione, limiti dei binari e errori comuni
Spazi, cifre, punteggiatura e caratteri non latini non vengono rimossi: ogni unità di codice partecipa alla trasposizione, quindi i messaggi mantengono i loro simboli e cambia solo l'ordine. Preferisca questa pagina quando l'intento di ricerca è cifrario rail fence, cifrario zigzag o cifrare/decifrare rail-fence; Atbash e ROT13 rispondono a intenti di sostituzione, e Base64 o hex a intenti di codifica, restando strumenti separati. In decifratura usi lo stesso numero di binari che ha prodotto il cifrato; un numero sbagliato produce un'altra permutazione che non corrisponderà al testo originale. Text mancante, non stringa o stringa vuota sollevano invalid_input e non sono addebitati sull'API prepagata dopo il rifiuto del motore. Rails mancante, non intero o un conteggio inferiore a due falliscono pure con invalid_input; la promessa del prodotto è un vero zigzag multi-binario, e un solo binario lascerebbe il messaggio invariato. Più di duecentocinquantasei binari sono rifiutati per tenere limitata la costruzione dello schema in una chiamata di elemento di isolate Worker. Non tratti il risultato come cifratura per la riservatezza: chi conosce il numero di binari può invertire lo schema in fretta, e la pagina del prodotto non deve mai presentare il rail fence come controllo di sicurezza per password, token o dati personali.
Uso dell'API, prezzi, flussi didattici e limiti pratici
Usi il cifrario rail fence gratuito nel browser per bozze di enigmi, diapositive di lezione, pratica CTF e controlli una tantum senza scrivere una routine zigzag in ogni linguaggio. I playbook di supporto possono invertire note di ticket leggermente confusi che il personale ha scritto di proposito con un numero di binari noto. I siti di enigmi possono precalcolare risposte da mostrare e rivelarle su richiesta con mode decrypt. Lo abbini a strumenti di sostituzione solo quando un passo didattico successivo richiede un'altra famiglia di cifrari: mantenga il rail fence sulla propria pagina così l'intento SEO resta nitido attorno alla trasposizione a zigzag. Usi l'API prepagata KIT quando un backend, una funzione serverless, una piattaforma di tutoraggio o un SDK necessita di un contratto stabile sotto saldo a $0.002 per elemento riuscito; i fallimenti di validazione non consumano mai il saldo dopo il rifiuto. Un flusso tipico di classe scrive una frase breve su binari di carta, confronta le risposte degli studenti con il risultato dell'API, poi decifra per mostrare che la trasposizione è invertibile quando la chiave è il numero di binari. Gli autori di SDK possono mappare il campo result direttamente su un pulsante di copia mentre mode, rails e method rendono gli esempi OpenAPI autoesplicativi. Mantenga i payload a dimensioni di testo ordinarie adatte a una chiamata di elemento di isolate Worker; questo strumento è per messaggi e frammenti, non per blob binari multi-megabyte.
Casi di integrazione
Fixture di pipeline e integrazione continua
Script e test di integrazione continua fissano uscite deterministiche rail-fence così bug accidentali di schema o di limiti dei binari falliscono subito.