Wpisany przez Krzysztof Maćkowiak,
17 sierpnia 2005 23:52
Nazwa: Szyfr Cezara
Rodzaj: Monoalfabetyczny szyfr podstawieniowy, ograniczony
Historia i zastosowanie: Jest to szyfr za pomocą, którego Juliusz Cezar szyfrował swoje listy do Cycerona. Jako ciekawostkę można podać, że szyfr ten był podobno używany jeszcze w 1915 roku w armii rosyjskiej, gdyż tylko tak prosty szyfr wydawał się zrozumiały dla sztabowców
Opis metody: Każdą literę tekstu jawnego zamieniamy na literę przesuniętą o 3 miejsca w prawo. I tak literę A szyfrujemy jako literę D, literę B jako E itd. W przypadku litery Z wybieramy literę C. W celu odszyfrowania tekst powtarzamy operację tym razem przesuwając litery o 3 pozycje w lewo.
Zapis matematyczny tych operacji wygląda następująco:
Szyfrowanie:
C=E(p)=(p+3)mod 26
Deszyfrowanie:
p=D(c)=(c-3)mod 26
Przyjmuje się, że alfabet składa się z 26 liter.
Opis procedury: Szyfrowany/deszyfrowany tekst znajduje się w pliku. Dodatkowo przed uruchomieniem procedury należy stworzyć drugi plik, będący plikiem wynikowym. W programie podajemy nazwy tych plików. Następnie otwierane są oba pliki i jeżeli operacja ta powiedzie się, zaczyna się szyfrowanie/deszyfrowanie. Za każdym razem pobierana jest jedna litera tekstu. Następnie według kod ASCII przydzielana jest ona do trzech możliwych grup: duże litery, małe litery lub cyfry. W przypadku oryginalnego szyfru Cezara nie było możliwości szyfrowania cyfr. Cyfry są w procedurze szyfrowane za pomocą przesunięcia o trzy a następnie wykonywana jest operacja mod 10. Co nie jest w pełni zgodne ze standardem algorytmu Cezara. Jeżeli ktoś uważa szyfrowanie cyfr za coś niepotrzebnego wystarczy, że usunie ostatnią instrukcję else if. Wszystkie inne znaki w tym spacja podczas szyfrowania ulegają usunięciu. Jeżeli komuś zależy, aby inne znaki też były szyfrowane wystarczy, aby dodał kolejne instrukcje else if (operacja mod wystąpi tylko wtedy gdy dodajemy jeszcze jakąś grupę znaków a nie pojedyncze znaki). Należy dodać je w miejscu gdzie w programie widnieje odpowiedni komentarz. Po zamianie każdej litery zapisywana jest ona w pliku wyjściowym. Na końcu oba pliki są zamykane i procedura kończy się.
W przypadku procedury deszyfrującej zastosowałem trochę inną metodę. Ponieważ litera a ma numer zero. Zatem gdy odejmujemy wartość 3. Uzyskujemy wynik -3. Aby uzyskać poprawny wynik Wystarczy odjąć od 26 wartość bezwzględną wyniku (lub jeżeli ktoś woli dodać ten wynik).
Oto przykładowy ciąg poddany działaniu algorytmu:
Tekst jawny: Algorytmy i Struktury Danych
Tekst zaszyfrowany: DojrubwpblVwuxnwxubGdqbfk
Poziom bezpieczeństwa: szyfr nie zapewnia bezpieczeństwa
Metody kryptoanalizy: analiza częstości występowania poszczególnych liter
Rodzaj: Monoalfabetyczny szyfr podstawieniowy, ograniczony
Historia i zastosowanie: Jest to szyfr za pomocą, którego Juliusz Cezar szyfrował swoje listy do Cycerona. Jako ciekawostkę można podać, że szyfr ten był podobno używany jeszcze w 1915 roku w armii rosyjskiej, gdyż tylko tak prosty szyfr wydawał się zrozumiały dla sztabowców
Opis metody: Każdą literę tekstu jawnego zamieniamy na literę przesuniętą o 3 miejsca w prawo. I tak literę A szyfrujemy jako literę D, literę B jako E itd. W przypadku litery Z wybieramy literę C. W celu odszyfrowania tekst powtarzamy operację tym razem przesuwając litery o 3 pozycje w lewo.
Zapis matematyczny tych operacji wygląda następująco:
Szyfrowanie:
C=E(p)=(p+3)mod 26
Deszyfrowanie:
p=D(c)=(c-3)mod 26
Przyjmuje się, że alfabet składa się z 26 liter.
Opis procedury: Szyfrowany/deszyfrowany tekst znajduje się w pliku. Dodatkowo przed uruchomieniem procedury należy stworzyć drugi plik, będący plikiem wynikowym. W programie podajemy nazwy tych plików. Następnie otwierane są oba pliki i jeżeli operacja ta powiedzie się, zaczyna się szyfrowanie/deszyfrowanie. Za każdym razem pobierana jest jedna litera tekstu. Następnie według kod ASCII przydzielana jest ona do trzech możliwych grup: duże litery, małe litery lub cyfry. W przypadku oryginalnego szyfru Cezara nie było możliwości szyfrowania cyfr. Cyfry są w procedurze szyfrowane za pomocą przesunięcia o trzy a następnie wykonywana jest operacja mod 10. Co nie jest w pełni zgodne ze standardem algorytmu Cezara. Jeżeli ktoś uważa szyfrowanie cyfr za coś niepotrzebnego wystarczy, że usunie ostatnią instrukcję else if. Wszystkie inne znaki w tym spacja podczas szyfrowania ulegają usunięciu. Jeżeli komuś zależy, aby inne znaki też były szyfrowane wystarczy, aby dodał kolejne instrukcje else if (operacja mod wystąpi tylko wtedy gdy dodajemy jeszcze jakąś grupę znaków a nie pojedyncze znaki). Należy dodać je w miejscu gdzie w programie widnieje odpowiedni komentarz. Po zamianie każdej litery zapisywana jest ona w pliku wyjściowym. Na końcu oba pliki są zamykane i procedura kończy się.
W przypadku procedury deszyfrującej zastosowałem trochę inną metodę. Ponieważ litera a ma numer zero. Zatem gdy odejmujemy wartość 3. Uzyskujemy wynik -3. Aby uzyskać poprawny wynik Wystarczy odjąć od 26 wartość bezwzględną wyniku (lub jeżeli ktoś woli dodać ten wynik).
Oto przykładowy ciąg poddany działaniu algorytmu:
Tekst jawny: Algorytmy i Struktury Danych
Tekst zaszyfrowany: DojrubwpblVwuxnwxubGdqbfk
Poziom bezpieczeństwa: szyfr nie zapewnia bezpieczeństwa
Metody kryptoanalizy: analiza częstości występowania poszczególnych liter
Implementacje
Autor | Język programowania | Komentarz | Otwórz | Pobierz | Ocena |
Krzysztof Maćkowiak | C/C++ | kodowanie/dekodowanie tekstu z pliku | .cpp | .cpp | ***** / 12 |
_marass_ | C/C++ | kodowanie/dekodowanie tekstu wpisanego z konsoli | .cpp | .cpp | ***** / 73 |
Marek Madejski | Python | .py | .py | ***** / 5 | |
Nikodem Solarz | Ruby | metoda szyfrująca i deszyfrująca. | .rb | .rb | ***** / 1 |
Poprawiony: 21 czerwca 2011 19:06
Komentarze
-6
#
Jasiek
2010-02-21 15:52
łatwe to too easy for me ! lol
Odpowiedz | Odpowiedz z cytatem | Cytować
+9
#
Mykola
2016-01-17 12:41
Cześć,możesz napisać cały kod dla JAVA?
Odpowiedz | Odpowiedz z cytatem | Cytować
+2
#
Mat
2014-06-06 08:44
Jeszcze jako metode kryptonalizy mozna podać: atak brute force bo dla dzisiejszych komputerów wygenerowanie 25 mozliwych tekstów( mamy 25 mozliwych kluczy) nie stanowi żadnego problemu i jest to nawet metoda zdecydownie szybsza niz analiza statystyczna.
Odpowiedz | Odpowiedz z cytatem | Cytować
0
#
Bodek
2016-04-14 12:56
Dokładnie, sru i gotowe
Odpowiedz | Odpowiedz z cytatem | Cytować
Dodaj komentarz