Cifrario scitala
Con 5 colonne, HELLOWORLD diventa HWEOLRLLOD: il testo si scrive riga per riga in una griglia, come una striscia avvolta intorno a un bastone, e si legge colonna per colonna. Lo stesso numero di colonne lo inverte e nessun carattere va perso. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- HELLOWORLD
- Colonne
- 5
- Modalità di calcolo
- Encrypt
- Testo
- HWEOLRLLOD
- Lunghezza
- 10
Il cifrario scitala è un classico cifrario a trasposizione dell'antica Grecia: si avvolge una striscia di pergamena attorno a un bastone di diametro fisso, si scrive lungo il bastone e poi si srotola la striscia, così le lettere si mescolano in un ordine per colonne. Questa capacità realizza quell'idea come una trasposizione a colonne deterministica: lei fornisce il testo, una chiave intera di colonne (il diametro) e la modalità cifra o decifra. La cifratura scrive i caratteri in una griglia riga per riga e li legge verso il basso lungo ogni colonna; la decifratura inverte la stessa mappa con la stessa chiave, così la lunghezza e ogni carattere—spazi e punteggiatura inclusi—si conservano.
Come funziona la trasposizione a scitala
Una scitala non è un cifrario a sostituzione: ogni lettera resta sé stessa; cambia solo l'ordine. Immagini la chiave come il numero di colonne su un cilindro. In modalità cifra il motore dispone la sua stringa in un layout rettangolare riempito da sinistra a destra e dall'alto in basso, con tante colonne quante ne ha scelte.
Le ultime righe incomplete lasciano celle vuote che non vengono mai riempite né emesse, così la lunghezza del testo cifrato è sempre uguale a quella del testo in chiaro e nessun carattere di riempimento viene inventato. Leggendo verso il basso la colonna zero, poi la colonna uno e così via si produce il testo cifrato—lo stesso rimescolamento che vedrebbe srotolando una striscia scritta attorno a un bastone di quel diametro.
La modalità decifra ricostruisce quel layout per colonne dal testo cifrato e lo rilegge da sinistra a destra, ripristinando la stringa originale ogni volta che si usa lo stesso valore di colonne. Poiché la mappa è una pura permutazione di indici, l'operazione è deterministica tra i runtime, priva di casualità, orologi o ricerche di rete, e sicura da sottoporre a test dorati. Scegliere una chiave di colonne errata in decifratura produce una permutazione errata, non un crash—esattamente il comportamento che gli studenti si aspettano quando provano diametri vicini.
Uso in aula, CTF e prodotto — e costo
I corsi di storia e crittografia usano la scitala per introdurre la trasposizione prima della sostituzione e dei cifrari moderni; i laboratori possono mostrare che conoscere il diametro recupera il messaggio mentre i diametri sbagliati no. Gli autori di capture-the-flag nascondono brevi flag sotto una chiave di colonne e verificano le soluzioni con questa stessa routine deterministica. Chi scrive documentazione incorpora coppie di cifratura e decifratura nei tutorial senza mantenere uno script offline separato.
Quella parità mantiene allineate le soluzioni dei compiti, i valori dorati di CI e le demo di produzione. Non tratti la scitala come riservatezza per segreti reali—è uno strumento didattico e ludico—ma tratti la chiave di colonne come il parametro segreto del sistema-giocattolo.
Casi d'uso
Laboratori di crittografia in aula
Dimostri la trasposizione classica: gli studenti cifrano una frase con una chiave di colonne, poi la recuperano decifrando con lo stesso diametro.
Autori di CTF e rompicapi
Nasconda brevi stringhe di sfida sotto una chiave scitala e verifichi le proposte dei solutori con la stessa coppia deterministica cifra/decifra.
Documentazione e demo di playground
Generi esempi stabili di testo cifrato per tutorial e playground di cifrari classici senza mantenere a mano tabelle di permutazione.
Domande frequenti
Cos'è un cifrario scitala?
Un classico cifrario a trasposizione: i caratteri mantengono il loro valore ma cambiano posizione secondo una chiave a colonne (diametro). Questo strumento realizza il modello standard scrittura per righe, lettura per colonne.
Perché le colonne devono essere almeno 2?
Un diametro di una colonna lascia il testo nello stesso ordine, quindi non è una chiave scitala significativa.
La decifratura ha bisogno dello stesso valore di colonne?
Sì. Cifratura e decifratura usano la stessa chiave intera. Un valore di colonne diverso applica una permutazione diversa e non ripristina il testo originale.
Spazi e punteggiatura si conservano?
Sì. Ogni carattere della stringa partecipa alla trasposizione. Nulla viene rimosso, reso minuscolo o riempito.
Quanto costa?
La pagina interattiva gira gratis nel suo browser.
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/scytale \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"HELLOWORLD","columns":5,"mode":"encrypt"}'const res = await fetch("https://api.kit.forhosting.com/enc/scytale", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "HELLOWORLD",
"columns": 5,
"mode": "encrypt"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/scytale",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "HELLOWORLD",
"columns": 5,
"mode": "encrypt"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/scytale", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"HELLOWORLD","columns":5,"mode":"encrypt"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"HELLOWORLD","columns":5,"mode":"encrypt"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/scytale", 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": "HELLOWORLD",
"columns": 5,
"mode": "encrypt"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.scytale",
"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 colonne viene rifiutato con invalid_input, perché una sola colonna lascia il messaggio invariato e non è un diametro di scitala significativo. Usi lo strumento gratis in questa pagina, oppure invochi l'identico algoritmo puro via API a $0.002 per richiesta per dimostrazioni in aula, aiuti CTF ed esempi di documentazione che devono restare riproducibili.
Come funziona la trasposizione a scitala
Colonne pari a uno o zero copierebbero il testo invariato o sarebbero indefinite come diametro; questa API richiede quindi un intero di almeno due e segnala invalid_input quando quella regola viene violata.
Chiamare l'API e leggere il risultato
Spazi, a capo e punteggiatura attraversano la griglia come qualsiasi altro carattere; nulla viene rimosso o reso minuscolo, il che mantiene intatte le demo in stile password e le stringhe multilinea d'aula. Faccia l'andata e ritorno cifrando con un dato valore di columns e decifrando con lo stesso valore; chiavi diverse non ripristinano l'originale. Il testo vuoto è consentito e restituisce un risultato vuoto con length zero. Invii tre campi: text (la stringa in chiaro o cifrata), columns (diametro intero, minimo due) e mode (cifra o decifra; sono accettati alias brevi come enc e dec). Un text mancante, un text non stringa, un valore columns mancante o non intero, columns minore di due, o una mode sconosciuta falliscono tutti con invalid_input e un messaggio che nomina il problema, così moduli e script possono mostrare un riscontro correggibile. In caso di successo il JSON include text (la stringa trasformata), mode (encrypt o decrypt canonico), columns (la chiave intera usata) e length (numero di caratteri del risultato, uguale alla lunghezza dell'input). Preferisca questo endpoint quando l'intento di ricerca è specificamente scitala o classica trasposizione su bastone; gli strumenti AEAD moderni servono un intento diverso e un diverso modello di minaccia.
Uso in aula, CTF e prodotto — e costo
I team di prodotto che pubblicano playground di cifrari classici possono chiamare l'API per controlli lato server mentre i visitatori sperimentano gratis nel browser. Poiché il lavoro è pura indicizzazione di stringhe in fase di parsing senza servizi esterni, la latenza resta bassa e il modello di costo è semplice: provi conversioni illimitate gratis in questa pagina, poi automatizzi input identici a $0.002 per elemento riuscito dal saldo prepagato KIT quando integra da script o servizi di backend. Mappi le etichette dell'interfaccia su cifra e decifra, validi le colonne lato client con lo stesso minimo di due e mostri i messaggi invalid_input accanto al controllo del diametro quando gli utenti inviano una sola colonna o un valore non intero.