Szyfrowanie

Kolejny tydzień i czas na kolejny post na moim blogu.
Zważywszy na to, że według regulaminu konkursu DSP2017 wymagane są dwa posty tygodniowo, jeden na temat pracy nad aplikacją, a drugi na temat związany ogólnie z informatyką.
Dzisiaj chciałbym dodać po raz pierwszy post właśnie związany z informatyką, a mówiąc dokładniej a raczej pisząc post na temat ochrony danych.
Ochrona danych jak można się domyślić odgrywa bardzo istotną role na całym świecie, a technika szyfrowania rozwinęła się już za czasów Juliusza Cezara, który to wymyślił prosty szyfr przedstawieniowy. No dobra ale nie o tym szyfrowaniu dzisiaj chciałem pisać :) (dla ciekawych historii odsyłam do Wikipedii).

Szyfr przekątno-kolumnowy.

Zasada działania tego szyfru jest dość prosta choć szczerze przyznam trochę musiałem się pogłówkować przy implementacji tego szyfru :).
Mamy dany tekst do zaszyfrowania np. BRYLANTY_SĄ_W_MOJEJ_SKRYTCE_W_BANKU
dodatkowo potrzebujemy klucza np. MAROKO

Cały sekret szyfrowania naszego tekstu polega na wpisaniu go do tablicy dwuwymiarowej, w której liczba kolumn określona jest przez nasz klucz. Screen shot poniżej obrazuje jak to powinno wyglądać w praktyce.



Jak widzimy nasza tablica została wypełniona do samego końca literkami z naszego tekstu, ale jak możemy zauważyć jest tam jeden dodatkowy znak 'X', o którym nie było mowy wcześniej. Tak jest ten dodatkowy znak jest po prostu uzupełnieniem tablicy do końca jeśli zostaną nam jakieś niewykorzystane komórki.
Kolejna rzeczą która przykuwa naszą uwagę są cyfry pod literami naszego klucza, otóż te cyfry oznaczają kolejność występowania danej litery w naszym słowie w uporządkowane alfabetycznie. 
To już wszystko co było niewiadome czas teraz na szyfrowanie.
Jak nazwa naszego szyfru wskazuje szyfrowanie odbywać się będzie przekątnie, i tutaj nie ma żadnej filozofii, po prostu patrzymy która literka w kluczu jest pierwsza w alfabecie i od niej zaczynamy schodząc w dół przez kolejne wierze i przesuwając się w lewą stronę.
Tak więc zaczynamy od literki A i dla niej wypisujemy po przekątnej literki czyli. RT ... no właśnie i co dalej ? :). Jeśli dotarliśmy do pierwszej kolumny naszej tabeli a nie z czytaliśmy wszystkich wierszy kolejny wiersz zaczynamy od ostatniej kolumny. A więc nasz ciąg znaków będzie teraz wyglądał w ten sposób: RTER_N, następnie patrzymy na kolejna literkę w porządku alfabetycznym w naszym kluczu i powtarzamy całą procedurę. Na samym końcu mamy otrzymany zaszyfrowany tekst: RTER_NASM_TXB_JKEAL_ _J_UNĄOSCBYYWYWK.

Deszyfrowanie jak można się domyślić odbywa się w odwrotnej kolejności do szyfrowania, nie ma tu tu nic trudnego tylko trzeba pamiętać o tym dodatkowym 'X'.

Moją implementację szyfru przekątno-kolumnowego możecie znaleźć na moim GitHubie o tutaj

Komentarze

Popularne posty z tego bloga

Meanjs. Tworzenie nowego projektu

Asp.Net Core MVC na Ubuntu 16.04

MongoDB w chmurze - RESTful API #2