Cifrario di Hill 2×2
Con la matrice chiave 3, 3, 2 e 5, HELP diventa HIAT: ogni coppia di lettere viene moltiplicata per la matrice modulo 26. Vede anche il determinante, qui 9, e la matrice inversa che serve per decifrare. Gratis nel suo browser.
- Gratis
- Funziona nel suo browser
- Senza registrazione
- I suoi dati restano sul dispositivo
Esegui gratis nel browser
Esempio risolto
- Testo
- HELP
- A
- 3
- B
- 3
- C
- 2
- D
- 5
- Modalità di calcolo
- Encrypt
- Risultato
- HIAT
- Det
- 9
- Det. inverso
- 3
- Inversa
- 15, 17, 20, 9
Il cifrario di Hill è una sostituzione poligrafica classica inventata da Lester S. Hill che cifra blocchi di lettere con algebra lineare modulare anziché con un solo spostamento o un alfabeto a parola chiave. Nella forma due per due, ogni coppia di lettere diventa un vettore colonna moltiplicato per una matrice chiave a quattro voci modulo ventisei, così il cifrato di ogni digramma dipende da entrambe le lettere del chiaro allo stesso tempo. La decifratura moltiplica per l'inversa modulare di quella matrice, che esiste solo quando il determinante è coprimo con ventisei. Studenti, giocatori di CTF e autori di enigmi usano il caso 2×2 perché l'aritmetica resta gestibile e dimostra comunque matrici invertibili su Z/26Z. Questa capacità accetta testo non vuoto, quattro interi di chiave a, b, c e d, e una modalità opzionale di cifratura o decifratura; restituisce il flusso di lettere trasformato più determinante, matrice inversa e metadati dei digrammi.
Come funziona la mappa Hill 2×2 e cosa contiene la risposta
La cifratura tratta ogni lettera latina come un numero da zero a venticinque ed elabora il flusso due lettere alla volta. Per un digramma con valori x1 e x2 e matrice chiave K con righe a b in alto e c d in basso, la coppia cifrata è y1 uguale a a per x1 più b per x2 modulo ventisei e y2 uguale a c per x1 più d per x2 modulo ventisei. Le lettere vengono riscritte in maiuscolo da A a Z.
Cifre, spazi, punteggiatura, emoji e scritture non latine vengono rimossi prima dell'accoppiamento così la matrice vede sempre un flusso alfabetico puro; se il conteggio delle lettere filtrate è dispari in cifratura, viene aggiunto un padding X affinché ogni blocco sia un digramma. La decifratura recupera il chiaro calcolando l'inversa matriciale modulare di K e moltiplicando allo stesso modo, il che richiede che il determinante ad meno bc ridotto modulo ventisei sia coprimo con ventisei.
Il mode opzionale accetta encrypt e encode per la mappa diretta e decrypt e decode per l'inversa.
Regole di validazione, matrici invertibili e trappole comuni
Anche il testo senza lettere latine dopo il filtro fallisce, perché non ci sono digrammi da formare. La regola di prodotto decisiva è l'invertibilità della matrice chiave modulo ventisei: il determinante det uguale a a per d meno b per c ridotto tra zero e venticinque deve soddisfare gcd di det e ventisei uguale a uno.
Quando quel gcd è maggiore di uno la mappa non è biiettiva sui digrammi e la decifratura non può essere unica, quindi la capacità segnala matrice chiave non invertibile con determinante e gcd calcolati nel messaggio di errore. I determinanti validi sono le unità di Z/26Z—uno, tre, cinque, sette, nove, undici, quindici, diciassette, diciannove, ventuno, ventitré e venticinque—così strutture singolari o solo pari come un'identità raddoppiata falliscono spesso.
In decifratura, un conteggio dispari di lettere dopo il filtro è rifiutato perché il cifrato deve arrivare in digrammi completi; la cifratura può imbottire con X ma la decifratura non inventa una lettera mancante. Non tratti l'uscita come cifratura per la riservatezza: lo spazio delle chiavi di quattro piccoli residui è minuscolo, gli attacchi a chiaro noto recuperano presto sistemi lineari, e la pagina prodotto non deve mai vendere Hill come controllo di sicurezza per password, token o dati personali.
Preferisca questa landing quando l'intento di ricerca è cifrario di Hill, Hill 2x2 o cifrario matriciale mod 26; affine risponde a mappe lineari monoalfabetiche, Playfair a rettangoli di digrammi e Base64 alla codifica, restando strumenti separati. In decifratura usi gli stessi a, b, c e d che hanno prodotto il cifrato; una matrice invertibile sbagliata dà un'altra sostituzione di digrammi che non coinciderà con il chiaro originale.
Usi in aula e limiti pratici
Chiami il cifrario di Hill gratuito nel browser per compiti, diapositive, pratica CTF e cifre o decifre occasionali senza reimplementare l'inversa matriciale modulare in ogni linguaggio. Un flusso d'aula tipico inizia con la matrice identità per mostrare che i digrammi passano invariati quando K è l'identità, poi passa alla chiave da manuale tre-tre-due-cinque e guida gli studenti a moltiplicare HELP in HIAT a mano prima di confrontare con lo strumento.
I docenti possono inviare di proposito una matrice non invertibile come due zero zero due per dimostrare che il gcd del determinante con ventisei blocca la decifratura, lezione centrale di algebra lineare sugli anelli modulari. I playbook di supporto possono invertire note leggermente offuscate scritte con chiavi d'aula note. I siti di enigmi possono precalcolare risposte e rivelarle a richiesta con mode decrypt.
Lo abbini all'analisi delle frequenze o ad altri strumenti classici solo quando un passo didattico successivo richieda un'altra famiglia di cifrari—mantenga il Hill 2×2 sulla propria landing così l'intento SEO resta nitido sulla sostituzione digramma matriciale modulo ventisei.
Casi d'uso
Compiti di crittoanalisi e riscaldamenti CTF
Gli studenti cifrano frasi brevi con una chiave 2×2 nota, decifrano il cifrato a digrammi dei compagni o verificano moltiplicazioni matriciali modulari fatte a mano senza installare un CAS.
Domande frequenti
Come si cifra un testo con il cifrario di Hill 2×2?
Il campo result della risposta contiene i digrammi del cifrato in maiuscolo.
Come si decifra un cifrato Hill?
Invii il cifrato come text, gli stessi a,b,c,d usati in cifratura e mode decrypt (o decode). Il result è il flusso di lettere maiuscole ricostruito quando la chiave coincide; i conteggi dispari di lettere dopo il filtro sono rifiutati.
Cosa succede se la matrice chiave non è invertibile mod 26?
La decifratura richiede gcd(det(K),26)=1; altrimenti la mappa dei digrammi non è biiettiva.
Lo strumento cifrario di Hill 2×2 è gratuito?
Lo strumento del browser gira gratis sul Suo dispositivo.
Il cifrario di Hill è una cifratura sicura?
No. Hill è un cifrario poligrafico classico 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/hill-2x2 \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"text":"HELP","a":3,"b":3,"c":2,"d":5}'const res = await fetch("https://api.kit.forhosting.com/enc/hill-2x2", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"text": "HELP",
"a": 3,
"b": 3,
"c": 2,
"d": 5
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/enc/hill-2x2",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"text": "HELP",
"a": 3,
"b": 3,
"c": 2,
"d": 5
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/enc/hill-2x2", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"text":"HELP","a":3,"b":3,"c":2,"d":5}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"text":"HELP","a":3,"b":3,"c":2,"d":5}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/enc/hill-2x2", 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": "HELP",
"a": 3,
"b": 3,
"c": 2,
"d": 5
}Esempio di risposta
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "enc.hill_2x2",
"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
Quando la matrice chiave non è invertibile modulo ventisei la richiesta fallisce con invalid_input e un messaggio chiaro di matrice chiave non invertibile.
Come funziona la mappa Hill 2×2 e cosa contiene la risposta
Invi JSON con il campo string obbligatorio text impostato su un messaggio non vuoto che conservi almeno una lettera dopo il filtro, interi obbligatori a, b, c e d ciascuno da zero a venticinque, e mode opzionale con predefinito encrypt; gli alias input, value, s, message, plaintext e ciphertext valgono per il corpo, mentre k11, m11 e key_a alias a, e gli alias in stile k12 coprono b, c e d. In caso di successo la risposta include result con le lettere maiuscole trasformate, mode normalizzato a encrypt o decrypt, le quattro voci di chiave, det e det_inv per il percorso del determinante, inverse come elenco piatto di quattro numeri di K inversa, key_matrix come array annidato due per due, letters_in con il flusso filtrato e eventualmente imbottito entrato nella matrice, digraph_count, booleano padded, length del testo originale e method uguale a hill_2x2 così i client possono ramificare senza indovinare le forme. Ingressi identici producono sempre lo stesso JSON perché il percorso è aritmetica modulare pura senza rete, seme casuale né orologio di sistema.
Regole di validazione, matrici invertibili e trappole comuni
Text mancante, non string o stringa vuota sollevano invalid_input e non vengono addebitati sull'API prepagata dopo il rifiuto del motore. Mancano a, b, c o d, chiavi non intere o valori fuori da zero–venticinque falliscono pure con invalid_input.
Uso dell'API, prezzi, aula e limiti pratici
Usi l'API prepagata KIT quando un backend, una funzione serverless, una piattaforma di tutoraggio o un SDK necessita di un contratto stabile a saldo di $0.002 per elemento riuscito; i fallimenti di validazione non consumano mai saldo dopo il rifiuto. Chi pubblica SDK può mappare il campo result su un pulsante copia mentre key_matrix, det, inverse e method rendono autoesplicativi gli esempi OpenAPI. Mantenga payload di dimensioni di testo ordinarie adatte a una chiamata item in un isolate Worker; questo strumento è per messaggi e frammenti, non blob binari multim megabyte.
Casi di integrazione
Dimostrazioni di algebra lineare modulare in aula
I docenti mostrano che solo le matrici con det coprimo a 26 sono invertibili, contrappongono i digrammi Hill alle mappe affini monoalfabetiche e ancorano a=3,b=3,c=2,d=5 come fixture da manuale.
Fixture di pipeline e CI
Script e test di integrazione continua ancorano uscite Hill deterministiche e l'errore di matrice chiave non invertibile così bug accidentali di determinante o inversa falliscono subito.