Arytmetyka modularna i szyfr przesuwający

Szyfr Cezara jest rodzajem szyfru przesuwającego. Szyfry przesuwające działają używając operatora modulo do szyfrowania oraz odszyfrowywania wiadomości. Szyfr przesuwający ma klucz K który jest liczbą całkowitą z zakresu od 0 do 25. Przekażemy go jedynie tym osobom, którym chcemy udostępnić naszą wiadomość.

Jak szyfrować:

Dla każdej litery w wiadomości  M :
1. Przekonwertuj literę na liczbę, która jej odpowiada według kolejności w alfabecie, zaczynając od 0, i podstaw ją pod X we wzorze poniżej.
(A=0, B=1, C=2, ..., Y=24, Z=25)
2. Wylicz według wzoru Y = (X + K) modulo 26
3. Zamień liczbę Y w literę, która odpowiada swojej kolejności w alfabecie zaczynając od 0.
(A=0, B=1, C=2, ...,Y=24, Z=25)
Na przykład: uzgadniamy z naszym przyjacielem, że prześlemy wiadomość używając szyfru przesuwającego z kluczem K=19
. Kodujemy wiadomość "KHAN" następująco:
Po zastosowaniu szyfru przesuwającego z kluczem K=19, nasza wiadomość "KHAN" w postaci zaszyfrowanej wygląda następująco "DATG"
Wiadomość "DATG" możemy śmiało przekazać koledze.

Jak odszyfrować:

Dla każdej litery z szyfru C wykonujemy poniższe działanie:
1. Zamień literę w na liczbę, równą jej miejsca w alfabecie, zacznij liczyć od 0
(A=0, B=1, C=2, ..., Y=24, Z=25)
2. Policz według wzoru X = (Y - K) modulo 26
3. Zamień liczbę X w literę, która odpowiada swojej kolejności w alfabecie zaczynając od 0.
(A=0, B=1, C=2, ...., Y-24, Z=25)
Nasz przyjaciel rozszyfruje teraz wiadomość za pomocą uzgodnionego klucza K=19. W taki sposób:
Zatem, stosując szyfr przesuwający z kluczem K=19, nasz przyjaciel dekoduje zaszyfrowany tekst "DATG", odczytując wiadomość "KHAN".

Dlaczego szyfr przesuwający nie jest bezpieczny?

Szyfr powinien uniemożliwić atakującemu, który posiada kopię zaszyfrowanego tekstu, lecz nie posiada klucza, odczytanie wiadomości. Ponieważ dysponujemy jedynie 26 możliwymi kluczami, ktoś mógłby z łatwością sprawdzać wszystkie 26 kluczy, jeden po drugim, by za którymś razem odczytać wiadomość. Ten rodzaj ataku nazywamy atakiem brute force.
Ładowanie