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.
  •