Szyfr czterokwadratowy jest techniką szyfrowania symetrycznego. Został wymyślony przez słynnego francuskiego kryptografa Felixa Delastelle.
Technika szyfruje pary liter (dwuznaki), a tym samym mieści się w kategorii szyfrów znanych jako poligraficzne szyfry zastępcze. To dodaje znacznej siły do szyfrowania w porównaniu z monograficznymi kodami podstawiania, które działają na pojedynczych znakach. Zastosowanie dwuznaków powoduje, że technika czterokwadratowa jest mniej podatna na ataki z analizy częstotliwości, ponieważ należy przeprowadzić analizę na 676 możliwych digrafach, a nie tylko 26 dla monograficznej substytucji. Analiza częstotliwościowa dwuznaków jest możliwa, ale znacznie trudniejsza - i na ogół wymaga znacznie większego tekstu zaszyfrowanego, aby była użyteczna.
Szyfr czterokwadratowy był stosowany na wszystkich frontach podczas II Wojny Światowej, przez wszystkie strony konfliktu. Obecnie uważany jest za przestarzały, głównie z racji skutecznych i szybkich ataków siłowych, możliwych do przeprowadzenia za pomocą komputerów.
Szyfr czterokwadratowy składa się z tablicy kodowej zawierającej cztery kwadraty kodowe (macierze) o polach 5x5. Każdy kwadrat wypełniony jest 25 literami alfabetu łacińskiego. Z racji tego, że alfabet łaciński zawiera 26 liter jedna najmniej wykorzystywana w alfabecie litera jest usuwana bądź litery używane są zastępczo (np. I zamiast J). Górny lewy kwadrat oraz dolny prawy zawierają litery uporządkowane alfabetycznie od A-Z. Natomiast dolny lewy oraz górny prawy kwadrat wypełniamy literami zawierającymi klucz bez powtarzania liter.
Na przykład ustalając klucz do prawej górnej macierzy PIERWSZY, a do lewej dolnej DRUGI i zamieniając J na I nasza tablica kodowa będzie wyglądała tak:
a b c d e P I E R W
f g h i k S Z Y A B
l m n o p C D F G H
q r s t u K L M N O
v w x y z Q T U V X
D R U G I a b c d e
A B C E F f g h i k
H K L M N l m n o p
O P Q S T q r s t u
V W X Y Z v w x y z
Aby zaszyfrować tekst jawny dzielimy go na dwuznaki składające się z par liter. Jeżeli jawne słowo nie będzie miało parzystej ilości liter wówczas na końcu dodajemy literę X. Na przykład chcąc zakodować słowo CALCOOLATOR dzielimy je na pary CA LC OO LA TO RX. Na końcu słowa dodaliśmy X ponieważ ilość liter była nieparzysta. Nasz koder automatycznie dopisze literę X jeśli tekst jawny będzie zawierał nieparzystą liczbę liter.
Następnie znajdujemy pierwszą literę pary C w lewym górnym kwadracie, a drugą literę A w prawym dolnym.
a b c d e P I E R W
f g h i k S Z Y A B
l m n o p C D F G H
q r s t u K L M N O
v w x y z Q T U V X
D R U G I a b c d e
A B C E F f g h i k
H K L M N l m n o p
O P Q S T q r s t u
V W X Y Z v w x y z
Teraz odczytujemy litery z miejsc przecięcia najpierw w prawym górnym kwadracie, a potem w lewym dolnym.
a b c d e P I E R W
f g h i k S Z Y A B
l m n o p C D F G H
q r s t u K L M N O
v w x y z Q T U V X
D R U G I a b c d e
A B C E F f g h i k
H K L M N l m n o p
O P Q S T q r s t u
V W X Y Z v w x y z
Pierwsza zakodowana para liter słowa jawnego CA będzie miała postać PU. Czynność odczytywania powtarzamy dla każdej z par liter słowa jawnego CA LC OO LA TO RX i przypisujemy jej pary odczytane z tablicy kodowej PU FD GM CD NM MW.