Cifrario griglia rotante
ATTACKATDAWN su una griglia 4 per 4 diventa ATTCXAKAXXDTXAWN: le lettere passano dai fori della maschera, che ruota di un quarto di giro quattro volte, e il quadrato pieno si legge riga per riga. Cambia solo l'ordine. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- ATTACKATDAWN
- Dimensione
- 4
- Modalità di calcolo
- Encrypt
- Testo
- ATTCXAKAXXDTXAWN
- Numero di fori
- 4
- Lunghezza
- 16
- Numero di riempimenti
- 4
Il cifrario a griglia rotante, detto anche griglia di Fleissner, è un sistema classico di trasposizione che nasconde l’ordine e non il valore delle lettere. Lei posiziona una maschera quadrata di cartone con fori ritagliati su una griglia vuota, scrive le successive lettere del testo in chiaro attraverso le aperture, ruota la maschera di novanta gradi e ripete finché la griglia è piena; leggendo il quadrato riempito riga per riga ottiene il testo cifrato. Questa capacità implementa quel processo in modo deterministico: fornisca il testo, una dimensione di griglia pari, il motivo di base dei fori e la modalità cifrare o decifrare. Il motore verifica che quattro giri in senso orario coprano ogni cella esattamente una volta e segnala una griglia non valida quando i fori si sovrappongono, lasciano vuoti, escono dalla scacchiera o hanno un conteggio errato. Spazi e punteggiatura viaggiano con le lettere; un testo in chiaro breve viene riempito con un solo carattere di padding affinché il messaggio completi quadrati interi.
Come funziona la griglia rotante
Una griglia rotante non è un cifrario di sostituzione: ogni carattere conserva la propria identità e cambia solo di posizione. Fissi una lunghezza di lato n pari così che la scacchiera abbia n al quadrato celle. Una maschera valida per quattro quarti di giro ha esattamente un quarto di quelle celle aperte — n al quadrato diviso quattro fori — scelte in modo che ruotare le aperture di novanta gradi in senso orario quattro volte visiti ogni cella una volta e mai due.
Quella condizione combinatoria è il cuore del sistema: ogni orbita di rotazione sotto il gruppo ciclico del quadrato contribuisce esattamente un foro nella maschera di base. La cifratura percorre le quattro orientazioni in ordine. A ogni orientazione i fori visibili sono ordinati in ordine riga-maggiore, i successivi caratteri del testo in chiaro vengono scritti attraverso di essi e la maschera gira.
Quando i quattro giri finiscono, la griglia è completa e il testo cifrato è la concatenazione delle righe dall’alto in basso, da sinistra a destra. La decifratura riempie quella stessa griglia dal testo cifrato in ordine riga-maggiore, poi rilegge le lettere attraverso la stessa sequenza di fori ruotati, ripristinando l’ordine originale incluso l’eventuale padding aggiunto per riempire l’ultimo blocco.
Poiché la mappa è una pura permutazione di indici per una dimensione e un insieme di fori fissi, la routine è deterministica tra runtime, senza casualità, orologi o richieste di rete, e sicura per test di riferimento. Un lato dispari lascia una cella centrale fissa sotto rotazione ed è rifiutato come griglia non valida per questo modello a quattro giri.
Orbite sovrapposte, fori di base duplicati, coordinate fuori intervallo o conteggio fori errato falliscono pure la validazione prima che qualsiasi carattere venga spostato, così chi chiama sa sempre se la maschera è una chiave legale.
Aula, CTF, prodotto e costo
I corsi di storia e crittografia usano la griglia rotante per introdurre chiavi geometriche e argomenti di orbite prima dei cifrari moderni: gli studenti progettano un motivo legale a quattro fori su una scacchiera quattro per quattro, cifrano un breve slogan, passano il testo cifrato e la descrizione della maschera a un compagno e recuperano lo slogan solo quando entrambe le parti condividono le stesse aperture. Gli autori di capture-the-flag nascondono flag sotto una griglia pubblicata o parziale e verificano le soluzioni contro questa stessa routine deterministica.
Chi redige documentazione inserisce coppie cifrare/decifrare nei tutorial senza mantenere a mano tabelle di permutazione per ogni rotazione. Non tratti la griglia rotante come confidenzialità per segreti reali — è uno strumento didattico e di puzzle — ma tratti il motivo dei fori e la dimensione come i parametri segreti del sistema giocattolo.
Casi d'uso
Autori di CTF e di enigmi
Nasconda stringhe brevi di sfida sotto una griglia rotante pubblicata o parziale e verifichi le soluzioni contro la stessa coppia cifrare/decifrare deterministica.
Documentazione e playground classici
Generi esempi stabili di testo cifrato per tutorial su Fleissner e griglia rotante senza mantenere a mano tabelle di rotazione per ogni dimensione della scacchiera.
Domande frequenti
Che cos’è un cifrario a griglia rotante?
Un cifrario classico di trasposizione che scrive lettere attraverso fori in una maschera quadrata, ruota la maschera di 90° altre tre volte per riempire la griglia e poi legge il quadrato riga per riga. I valori delle lettere restano; cambia solo l’ordine.
Perché size deve essere pari?
Questa implementazione usa quattro giri di 90° senza cella centrale fissa.
Cosa rende non valida una griglia?
Conteggio fori errato (non size²/4), aperture duplicate o fuori intervallo, oppure qualsiasi cella coperta più di una volta o lasciata scoperta dopo quattro rotazioni. Il messaggio di errore include la frase invalid grille.
Quanto costa?
La pagina interattiva funziona gratis nel Suo browser.
Quanto può essere grande la griglia?
Il lato del quadrato va da 2 a 16 caselle e deve essere un numero pari. Con un lato dispari la casella centrale resterebbe ferma a ogni rotazione, quindi la griglia viene rifiutata.
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/grille-cipher \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"ATTACKATDAWN","size":4,"holes":[{"row":0,"col":0},{"row":0,"col":1},{"row":0,"col":2},{"row":1,"col":1}],"mode":"encrypt"}'const res = await fetch("https://api.kit.forhosting.com/enc/grille-cipher", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "ATTACKATDAWN",
"size": 4,
"holes": [
{
"row": 0,
"col": 0
},
{
"row": 0,
"col": 1
},
{
"row": 0,
"col": 2
},
{
"row": 1,
"col": 1
}
],
"mode": "encrypt"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/grille-cipher",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "ATTACKATDAWN",
"size": 4,
"holes": [
{
"row": 0,
"col": 0
},
{
"row": 0,
"col": 1
},
{
"row": 0,
"col": 2
},
{
"row": 1,
"col": 1
}
],
"mode": "encrypt"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/grille-cipher", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"ATTACKATDAWN","size":4,"holes":[{"row":0,"col":0},{"row":0,"col":1},{"row":0,"col":2},{"row":1,"col":1}],"mode":"encrypt"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"ATTACKATDAWN","size":4,"holes":[{"row":0,"col":0},{"row":0,"col":1},{"row":0,"col":2},{"row":1,"col":1}],"mode":"encrypt"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/grille-cipher", 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": "ATTACKATDAWN",
"size": 4,
"holes": [
{
"row": 0,
"col": 0
},
{
"row": 0,
"col": 1
},
{
"row": 0,
"col": 2
},
{
"row": 1,
"col": 1
}
],
"mode": "encrypt"
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.grille_cipher",
"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
Usi lo strumento gratis in questa pagina, oppure chiami lo stesso algoritmo puro via API a $0.002 per richiesta per dimostrazioni in classe, ausili CTF ed esempi di documentazione riproducibili.
Chiamare l’API e leggere il risultato
Text è la stringa in chiaro o cifrata; nulla viene rimosso né normalizzato in maiuscole/minuscole, quindi maiuscole miste, spazi e punteggiatura partecipano alla trasposizione come qualsiasi altro carattere. Size è un intero pari da due a sedici inclusi — il lato del quadrato. Holes è un array di oggetti con indici interi row e col a partire da zero; la lunghezza di quell’array deve essere uguale a size al quadrato diviso quattro. Esegua il percorso di andata e ritorno cifrando con un size e un motivo di fori dati e decifrando con la stessa coppia; una maschera diversa produce una permutazione diversa e non ripristinerà l’originale. Il testo vuoto viene rifiutato. Invii text, size, holes e mode. Il pad_char opzionale è un solo carattere usato solo in cifratura quando la lunghezza del messaggio non è multipla di size al quadrato; il valore predefinito è X maiuscola. Campi obbligatori mancanti, text non stringa, size non pari, fori fuori intervallo, maschera sovrapposta o incompleta, mode sconosciuto, o lunghezza di decifratura non multipla del conteggio celle falliscono tutti con invalid_input e un messaggio che nomina il problema — la formulazione invalid grille compare quando la colpa è della maschera stessa. In caso di successo il JSON include text (la stringa trasformata), mode (encrypt o decrypt canonico), size, holes (normalizzati e ordinati), holes_count, length del risultato, pad_count (quanti caratteri di padding sono stati aggiunti in cifratura, zero in decifratura) e blocks (quanti quadrati completi sono stati elaborati). Preferisca questo endpoint quando l’intento di ricerca è specificamente una griglia rotante, una griglia di Fleissner o un cifrario a maschera di cartone rotante, piuttosto che una trasposizione colonnare o rail-fence.
Aula, CTF, prodotto e costo
I team di prodotto che offrono playground di cifrari classici possono chiamare l’API per controlli lato server mentre i visitatori sperimentano gratis nel browser. Poiché il lavoro è pura indicizzazione in tempo di parse senza servizio esterno, 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 con saldo prepagato KIT quando integra da script o servizi backend. Mappi i controlli dell’interfaccia su size, un editor di righe per holes e cifrare versus decifrare; validi lato client il size pari e il conteggio fori quando può, e mostri i messaggi invalid_input accanto all’editor della griglia quando gli utenti inviano aperture sovrapposte o un lato dispari.
Casi di integrazione
Laboratori di crittografia in aula
Gli studenti progettano una maschera di fori valida su una griglia pari, cifrano una frase con quattro rotazioni e poi la recuperano con lo stesso size e gli stessi holes — mostrando che la geometria è la chiave.
Domande tecniche
La decifratura richiede gli stessi holes e size?
Sì. Cifrare e decifrare usano lo stesso size pari e lo stesso motivo di base dei fori. Una maschera diversa applica un’altra permutazione e non ripristinerà il testo originale.