Caesarova šifra je jedna z nejjednodušších šifer. Představuje nejtriviálnější variantu afinní šifry. Její kryptoanalýza se může provádět hrubou silou.

Caesarova šifra

Je jedna z nejjednodušší šifer, jaké kdy vznikly a také jedna z nejstarších. V době svého vzniku (před více než 2000 lety) představovala zásadní průlom v kryptografii.

Klíčem šifry je přirozené číslo k udávající, o kolik znaků v abecedě se jednotlivé znaky vstupního řetězce posunou. Caesar používal při komunikaci s Kleopatrou k = 3.

Vstupní znak: a b c d e f ... y z
Znak kódové abecedy: d e f g h i ... b c
Ukázka přepisu znaků Caesarovy šifry pro k = 3.

Kryptoanalýza

Kryptoanalýzu je možné provést triválně hrubou silou. To jest vyzkoušením všech variant, dokud se nevyklube kloudná zpráva. Další možnost je dopomoci si frekvenční analýzou.

Úlohy k vyřešení

Následující kód, který slouží k šifrování pomocí Caesarovy šifry, přepište tak, aby sloužil i k dešifrování. Odůvodněte, zdali je třeba dělat větší zásahy, případně co je třeba změnit, aby se co nejjednodušeji dosáhlo cíle.

def caesar(slovo, klic):
  vystup = "";
  for ch in slovo:
    if 97 <= ord(ch) <= 122:
      vystup = vystup + str(chr( (((ord(ch) - 97) + klic) % 26) + 97));
    else:
      vystup = vystup + ch;
  return vystup;

vstup = "ahoj svete";
print(caesar(vstup, 3))