Szyfr Cezara

Szyfr Cezara (szyfr przesuwający) jest jednym z najstarszych znanych szyfrów. Jest on zbudowany na zasadzie szyfru podstawieniowego gdzie każda litera, tekstu niezaszyfrowanego zastępowana jest oddaloną od niej o stałą liczbę pozycji w alfabecie inną literą. W szyfrze Cezara nie rozróżnia się dużych i małych liter.

Obecnie Szyfr Cezara nie gwarantuje żadnego bezpieczeństwa.

Zasada działania Szyfru Cezara jest bardzo prosta:

1343230432szyfr-cezara

Każdą literę tekstu niezaszyfrowanego zastępujemy inną przesuniętą względem litery kodowanej o stałą liczbę pozycji w alfabecie. Na przykład dla litery „a” (kod ASCII 97) przy przesunięciu o 2, literą kodowaną będzie „c” (kod ASCII 99) itd.

Przeanalizujmy prosty program szyfrujący szyfrem Cezara. Aplikacja została napisana w języku C#:

Głównym elementem programu, który odpowiedzialny jest za szyfrowanie jest ten fragment:

Działa on w następujący sposób:

  1. Najpierw pobieramy kod ASCII wprowadzonego znaku ( keyInfo.KeyChar ),
  2. Następnie odejmujemy liczbę 95 od numery ASCII podanej litery (kiedy podstawimy numer ASCII pierwszej litery alfabetu czyli „a” i odejmiemy od niego 95 (czyli 97 – 95), otrzymamy stałą liczbę miejsc w alfabecie o jaką będziemy przesuwać litery),
  3. Potem wykonujemy dzielenie modulo przez 27 (jest to wynik działania: 122 – 95, numer 122 to kod ostatniej litery alfabetu, a 95 to wcześniej zadeklarowana liczba),
  4. Na końcu dodajemy cyfrę 97 czyli numer ASCII pierwszego znaku.

Dzięki tak przygotowanemu algorytmowi każda litera zostanie odpowiednio zakodowana.

Szyfr Cezara w C++:

, , , , , ,