Il Rasterschlüssel 44 è un sistema a griglia, quindi di trasposizione, usato durante la II Guerra Mondiale dall'esercito tedesco come cifrario manuale; paradossalmente questo cifrario si rivelò più robusto delle ben più note macchine Enigma e Lorenz; i matematici di Bletchley Park infatti riuscirono a trovare un metodo per decrittarlo, ma la cosa richiedeva tempi lunghi, inaccettabili in tempo di guerra, e alla fine si rinunciò a sprecare tempo ed energie con questo cifrario.
La griglia è composta di 25 colonne per 24 righe, identificate dai 25 bigrammi formati con le prime cinque lettere (a b c d e) scritti in testa ad ogni colonna e in fondo a destra di ogni riga.
In ogni riga sono annerite, quindi escluse, 15 caselle a caso, lasciandone 10 per il testo. Il messaggio chiaro viene scritto a partire da una posizione convenuta, continuando poi a rotazione dall'inizio verso destra e verso il basso. La posizione iniziale è codificata con quattro lettere, il bigramma della colonna seguito dal bigramma della riga.
Il cifrato da trasmettere si ottiene leggendo la griglia per colonne; le colonne vanno lette secondo un ordine convenuto, scritto in cima ad ogni colonna. Si tratta quindi di un sistema a doppia trasposizione, la prima è quella della griglia, la seconda consiste nella permutazione delle colonne. All'inizio del cifrato vengono poste le quattro lettere indicanti la posizione di partenza; queste quattro lettere, che nell'esempio a lato sono mostrate in chiaro, venivano in realtà a loro volta cifrate per sostituzione.
Fu adottato dai militari tedeschi a partire dal marzo 1944 (di qui il nome) quando le sorti del conflitto volgevano ormai a favore degli Alleati. Complicato da decrittare per gli Angloamericani, era complicato da usare anche per i Tedeschi. Alla tradizionale complicazione della cifratura per trasposizione si aggiungeva la necessità di cambiare quotidianamente la griglia e la posizione iniziale secondo appositi fogli di lavoro.
Quante sono le griglie possibili secondo queste specifiche? Ogni riga deve contenere 15 caselle nere e 10 bianche; la prima casa bianca può essere una qualsiasi delle 25, la seconda una qualsiasi delle 24 rimanenti e così via; quindi le disposizioni possibili sono $ D = 25 \times 24 \times 23 ... 16 = \frac{25!}{15!}$ ma l'ordine in cui vengono scelte le 10 case bianche è irrilevante, ogni combinazione di 10 viene contata $10!$ volte, e occorre dividere anche per 10! Quindi le righe possibili sono:
$$ \sideset{_{25}}{_{10}}C = \frac{25!}{15! \times 10!} = 3268760 $$
Ci sono 24 righe, scelte indipendentemente una dall'altra, quindi si tratta di prove ripetute e va calcolata la potenza; in totale il numero $N$ di griglie possibili è:
$$ N = (\sideset{_{25}}{_{10}}C)^{24} = 2.214 \times 10^{156} $$
che è un numero astronomico, anzi cosmologico fuori della portata di qualsiasi attacco esaustivo. Si potrebbe pensare che si debba moltiplicare ancora per $25!$ e cioè per il numero di permutazioni delle colonne previsto dal sistema; ma in realtà una permutazione di colonne non fa altro che generare una delle possibili griglie già incluse nel conteggio e il numero di griglie possibili resta quello calcolato.
Questo fatto suggerisce la domanda: ma allora permutare le colonne, non aumentando il numero di griglie possibili, è operazione inutile?
La risposta è che il testo chiaro viene scritto secondo la griglia, la permutazione delle colonne avviene dopo e quindi è una seconda trasposizione che in effetti aumenta la sicurezza. Quindi il prededente numero $N$ è quello delle griglie possibili, quello delle trasposizioni possibili con questo metodo è pari a $ 25! \times N $ numero ancora maggiore; certo già $N$ era talmente grande che questo aumento di sicurezza può sembrare superfluo, ma come è noto la sicurezza di un cifrario non dipende solo dal numero di combinazioni possibili.
La figura a lato consente di simulare la trasposizione dopo aver scritto un messaggio nella finestra di testo sotto la griglia. Gli eventuali spazi vengono rimossi e le lettere convertite in maiuscolo. La disposizione delle caselle nere è generata con una funzione casuale (la rand() di PhP(*)) e così anche la posizione iniziale e gli identificatori di righe e colonne. La figura ha finalità puramente dimostrative.