|
Szyfr przesuwający
Szyfr przesuwający to szyfr, w którym każdemu znakowi tekstu jawnego odpowiada dokładnie jeden znak w szyfrogramie, przesunięty o określoną, stałą liczbę znaków w alfabecie. Litery z końca alfabetu stają się literami z jego początku.
Przykładowo przy przesuwaniu o 3 znaki w alfabecie łacińskim (bez polskich liter) litery A stają się D, F – I, a Y literami B.
Formalna definicja przekształceń
Założenia:
Używamy alfabetu z 26 znakami, numerowanymi od 0 do 25.
x to znak tekstu jawnego
y to znak szyfrogramu
k to klucz (liczba o jaką przesuwamy)
Szyfrowanie:
y = (x + k) mod 26
gdzie mod to obliczanie reszty z dzielenia.
Deszyfrowanie:
x = (y - k) mod 26
Uwaga: Operacja "mod" w większości języków programowania daje ujemne wyniki dla ujemnego pierwszego argumentu, stąd w praktyce do deszyfrowania lepiej użyć wzoru:
x = (y + 26 - k) mod 26
PRZYKŁAD:
Tekst jawny: Krzysiek
Po przypisaniu każdej literze liczby od 0 do 25 uzyskujemy: 10 17 25 24 18 8 4 10
Klucz: k=20 (a więc dodajemy 20 do kodu każdej litery, a następnie obliczamy resztę z dzielenia przez 26)
Szyfrogram:
4 11 19 18 12 2 24 4
czyli po zamianie na litery:
E L T S M C Y E
PRZYDATNOŚĆ Szyfry tego typu nie zapewniają absolutnie żadnego bezpieczeństwa.
Aby złamać taki szyfr, wystarczy sprawdzić wszystkie wartości klucza (przeszukać przestrzeń klucza), aż do otrzymania sensownego tekstu jawnego. Średnio będzie to 25/2 = 12,5 próby.
|
|