Szyfr Playfair – objaśnienie i implementacja

Kryptologia to dziedzina, która jest nierozłącznie kojarzona z informatyką. Jest tak nie bez powodu – m.in. to właśnie dzięki wszelakiej maści szyfrom, dbamy o bezpieczeństwo naszych danych. Zagłębianie się w tematykę kryptologii warto rozpocząć od zapoznania się z jednym z wielu szyfrów, którym może być chociażby szyfr Playfair.

Trochę historii

Szyfr Playfair został opracowany przez Charlesa Wheatstone – angielskiego wynalazcę. Szyfr ten zawdzięcza swoją nazwę baronowi Lyonowi Playfair, który stał za jego popularyzacją. Korzysta on z jednego klucza do szyfrowania i deszyfrowania wiadomości, należy więc do grupy szyfrów symetrycznych. Jest to także pierwszy z szyfrów, w którym tekst szyfrowany dzielony jest nie na pojedyncze litery (jak chociażby w szyfrze cezara), a na pary liter, zwane digrafami.

Szyfr Playfair był wykorzystywany przez brytyjską armię podczas wojny burskiej. Jest on stosunkowo prosty w użyciu, dzięki czemu nadawał się idealnie do zastosowań polowych.

Szyfr Playfair – zasada działania

Przejdźmy jednak do meritum, jakim jest zasada działania szyfru. Do rozpoczęcia działania potrzebujemy klucza oraz tekstu do szyfrowania. Za klucz przyjmijmy słowo „binary”, a naszym tekstem jawnym będzie słowo „programowanie”.

W pierwszej kolejności potrzebujemy stworzyć kwadrat szyfrowania, który jest niczym innym jak tablicą o wymiarach 5×5. W kolejnym kroku wpisujemy litery klucza w kolejne komórki tablicy, pomijając wpisane już znaki (przykładowo klucz „binarnie” zostałby zapisany jako „binare”).

szyfr Playfair - tablica szyfrowania

Następnie wpisujemy do tablicy pozostałe, nie wpisane jeszcze litery alfabetu (pomijając literę „j”, która zmieniana jest na literę „i”, ze względu na ograniczony rozmiar tablicy).2

szyfr Playfair - wypełniona tablica szyfrowania

Mając już gotową tablicę, możemy przystąpić do szyfrowania. Pierwszy krok, który musimy wykonać, to podzielenie szyfrowanego tekstu na pary liter. W naszym przypadku, otrzymamy: pr-og-ra-mo-wa-ni-e. Ze względu na nieparzystą liczbę liter w naszym tekście, dodajemy na koniec tekstu literę „z”, otrzymując: pr-og-ra-mo-wa-ni-ez. Szyfrowanie digrafów podzielone jest na kilka przypadków:

1)Obie litery są w tej samej kolumnie – W tym przypadku, zamieniamy litery, na te znajdujące się pod nimi. Przykładowo OG, zamienia się UO. W przypadku gdy którakolwiek z liter którą mamy zamienić, znajduje się na końcu kolumny, podczas zamiany bierzemy literę znajdującą się na początku tej samej kolumny

szyfr Playfair - tablica szyfrowania

2)Obie litery są w tym samym wierszu – Analogicznie do przypadku pierwszego, zamieniamy litery na te sąsiadujące z nimi po prawej stronie. Jeśli któraś z liter znajduje się na końcu wiersza, bierzemy pierwszą literę znajdującą się na początku wiersza. Przykładowo dwuznak RA, zostanie zamieniony na BR.

szyfr Playfair - tablica szyfrowania

3)Pozostałe przypadki – Gdy litery nie znajdują się w tej samej kolumnie ani wierszu, należy zlokalizować obie litery w tablicy. Następnie pierwszą literę zamieniamy ze znakiem znajdującym się na przecięciu wiersza litery pierwszej z kolumną litery drugiej. Przykładowo w digrafie PR, litera „p” zostanie zamieniona na literę „t”.

Druga z liter, zostaje natomiast zastąpiona znakiem znajdującym się na przecięciu kolumny litery pierwszej, z wierszem litery drugiej. Litera „r”, z tego samego dwuznaku zostanie więc zastąpiona literą „i”. Digraf PR zostanie więc przekształcony w TI.

Przechodząc przez cały proces, słowo „programowanie” zaszyfrowane przy użyciu klucza „binary”, będzie miało postać „tiuobrgtxnanfx”.

Odszyfrowywanie wiadomości znając procedurę szyfrowania nie należy do najtrudniejszych zadań – procedura jest zwyczajnie odwracana. Jeśli obie litery są w tej samej kolumnie, zamieniamy je na litery znajdujące się nad nimi. W przypadku gdy są w tym samym wierszu czytamy litery sąsiadujące z nimi po lewej stronie. W przypadku gdy litery znajdują się w innych kolumnach i wierszach, tak jak w przypadku szyfrowania szukamy przecięć, w kolejności wiersza litery pierwszej z kolumną litery drugiej, a następnie kolumny litery pierwszej, z wierszem litery drugiej.

Szyfr Playfair – implementacje

Implementacja szyfru Playfair podzielona jest na kilka funkcji. W pierwszej kolejności należy przygotować odpowiednio klucz oraz tekst jawny. Z obu należy usunąć znaki białe i zamienić je na małe, bądź wielkie litery.

C++

Java

Python

Następnie generować będziemy tablicę szyfrowania o wymiarach 5×5. Następnie wykonujemy wszystkie kroki generowania tablicy. W poniższej implementacji korzystamy z pomocniczego stringa w celu sprawdzania, czy dane litery znajdują się już w tablicy. Wykonywane jest to przy pomocy metody find().

C++

Java

Python

Po wygenerowaniu tablicy korzystamy z funkcji pomocniczej do jej wyświetlenia.

C++

Java

Python

Oprócz funkcji wyświetlającej zawartość tablicy stworzona została struktura point przechowująca współrzędne punktu, która to wykorzystana zostaje w funkcji wyszukującej koordynaty danego znaku.

C++

Java

Python

Po przygotowaniu tablicy szyfrowania, przystępujemy do właściwego szyfrowania. Każdy krok szyfrowania rozpoczynamy od znalezienia współrzędnych obu rozpatrywanych znaków. Następnie przyrównując do siebie koordynaty x i y, odpowiadające za pozycję w wierszu i kolumnie, określamy przypadek. Nowe znaki z tablicy, zostają dodane do zaszyfrowanego ciągu znaków, według standardowych zasad.

C++

Java

Python

Funkcja odszyfrowywania odwraca kolejność działań. Całość programu ma więc postać:

C++

Java

Python

Podsumowanie

Szyfry to zagadnienie ciekawe same w sobie, lecz również przydatne w nauce do matury z informatyki. Jeśli chcecie powiększyć swoją wiedzę informatyczną i przygotować się jak najlepiej do matury, zapraszamy Was do naszej grupy facebookowej, którą znajdziecie po kliknięciu w poniższą grafikę:

grupa wsparcia matura z informatyki

Chcę wam pogratulować, ponieważ właśnie poznaliście zasadę działania szyfru Playfaira oraz jego implementację. Dobrnęliście także do końca tego obszernego tekstu. Do zobaczenia niedługo!

You Might Also Like
Dodaj komentarz