Stewdent.eu
▾

Caesarova šifra

Spoznaj jednu z najstarších šifrovacích techník a zisti, ako funguje posun písmen v abecede.

Posledná aktualizácia: 28. februára 2026

★☆☆☆☆ Stupeň 1computingDátaencryptioncaesar ciphercryptography4 min čítania

Nahlásiť chybu

Pred tisíckami rokov rímsky vojevódca Július Caesar chcel posielať tajné správy svojim generálom. Vymyslel jednoduchý trik: každé písmeno v správe posunul o niekoľko miest v abecede. Táto metóda sa volá Caesarova šifra a je jedným z najstarších šifrovacích algoritmov v histórii.

Ako funguje Caesarova šifra?

Princíp je jednoduchý: každé písmeno v správe nahradíš písmenom, ktoré je v abecede posunuté o pevný počet miest — tento počet sa nazýva kľúč.

Príklad s posunom 3:

Originálna abeceda: A B C D E F G H I J K L M N O P Q R S T U V W X Y Z
Posunutá abeceda:   D E F G H I J K L M N O P Q R S T U V W X Y Z A B C

Správa: AHOJ → Zašifrované: DKRM

  • A → D (posun o 3)
  • H → K (posun o 3)
  • O → R (posun o 3)
  • J → M (posun o 3)

Na dešifrovanie jednoducho posunieme písmená späť o 3 miesta.

Poznámka

Caesar vraj používal posun 3. Preto sa niekedy táto šifra nazýva „ROT-3". Šifra ROT-13 (posun o 13) je špeciálna — keďže anglická abeceda má 26 písmen, zašifrovanie aj dešifrovanie je ten istý postup.

Implementácia v Pythone

def caesar_sifra(text, posun):
    """Zašifruje alebo dešifruje text Caesarovou šifrou."""
    vysledok = ""
    for znak in text.upper():
        if znak.isalpha():
            # Posunieme písmeno v abecede (cyklicky)
            novy_kod = (ord(znak) - ord('A') + posun) % 26
            vysledok += chr(novy_kod + ord('A'))
        else:
            vysledok += znak  # Medzery a interpunkciu ponecháme
    return vysledok


# Šifrovanie
sprava = "AHOJ SVET"
zasifrovana = caesar_sifra(sprava, 3)
print(f"Zašifrované: {zasifrovana}")   # DKRM VYHW

# Dešifrovanie (negatívny posun alebo posun 26 - kluc)
desifrovana = caesar_sifra(zasifrovana, -3)
print(f"Dešifrované: {desifrovana}")   # AHOJ SVET
Tip

Operátor % (modulo) zabezpečuje, že po písmene Z sa abeceda „zabalí" a pokračuje od A. Takže Z s posunom 3 sa stane C, nie [ (znak za Z v ASCII).

Prečo je Caesarova šifra nespoľahlivá?

Caesarova šifra je veľmi ľahko prelomiteľná:

  1. Hrubá sila (Brute force): Anglická abeceda má 26 písmen — existuje iba 25 rôznych posunov. Útočník môže vyskúšať všetky za niekoľko sekúnd.

  2. Frekvenčná analýza: V každom jazyku sa niektoré písmená vyskytujú oveľa častejšie (v slovenčine napr. „a", „o", „e"). Útočník zistí, ktoré písmeno je v šifrovanom texte najčastejšie, a odvodí posun.

# Hrubá sila — vyskúšanie všetkých posunov
zasifrovana = "DKRM VYHW"
for posun in range(26):
    pokus = caesar_sifra(zasifrovana, -posun)
    print(f"Posun {posun:2d}: {pokus}")
Upozornenie

Caesarova šifra sa nikdy nesmie použiť na ochranu skutočne citlivých dát. Moderné šifrovanie (AES, RSA) je nepomerne silnejšie — prelomenie by trvalo milióny rokov aj tým najrýchlejším počítačom.

Historický kontext

Napriek svojej jednoduchosti bola Caesarova šifra za čias Rímskeho impéria pomerne bezpečná — väčšina nepriateľov ani netušila, že správy sú vôbec šifrované. Moderné šifrovanie stojí na oveľa sofistikovanejších matematických základoch.

Cvičné príklady

Zašifruj slovo 'MAMA' Caesarovou šifrou s posunom 5.

Zobraziť odpoveď
M → R, A → F, M → R, A → F. Výsledok: 'RFRF'.

Prečo Caesarova šifra nie je bezpečná v dnešnej dobe? Uveď aspoň jednu konkrétnu metódu útoku.

Zobraziť odpoveď
Caesarova šifra má iba 25 možných kľúčov — počítač ich všetky vyskúša za zlomok sekundy (útok hrubou silou). Ďalšia slabina je frekvenčná analýza: najčastejšie písmeno v šifrovanom texte pravdepodobne zodpovedá najčastejšiemu písmenu daného jazyka, čím sa kľúč odhalí.