Caesarova šifra

Caesarova šifra je jednou z nejjednodušších a nejznámějších šifer na světě. Je pojmenována podle Julia Caesara, který ji použil pro vojenskou komunikaci.

Patří do kategorie substitučních šifer. Pro názornost máme otevřený text (OT) a šifrovaný text (ŠT). A provádíme substituci, tzn., že písmeno z OT zaměníme za jiné písmeno a tím nám vznikne ŠT. Tento postup neprovádíme nahodile, ale podle nějakého klíče, postupu apod. U této šifry se používá klíč, podle kterého se posunujeme v abecedě. Například bude číslo 3 je našim klíčem, potom se písmeno A zašifruje na písmeno D. Analogicky B je E. Pracujeme s písmeny anglické abecedy, těch je 26. A jsou číslována od 0, A=0, B=1 atd.

S předchozím slovním popisem algoritmu bychom dlouho nevydrželi, proto musíme použít trochu matematiky. Ale nebojte není to těžká věc. Použijeme proměnné OT, ŠT a přidáme k, jako klíč. Text šifrujeme vztahem ŠT = (OT + k) mod 26. Až na slovo “mod” je to doufám jasné. Ihned vysvětlím: K písmenu z otevřeného textu přičteme klíč a vydělíme 26. Právě 26, protože tolik je písmen v abecedě, kterou používáme. A pozor, nás výsledek je zbytek po celočíselném dělení! Potom šifrujeme B=1 s klíčem 3, jako (1+3) / 26 = 0 a zbydou 4. Čtyřka je náš výsledek, naše písmeno v zašifrovaném textu. Tímto způsobem funguje tajemný matematický zápis. Dešifrivání je analogické OT = (ŠT – k) mod 26.

Je důležité říci, že nám musí vyjít něco v rozsahu 0 – 25, abychom to mohli převést na text. Ale co když nevyjde? Pomoc je jednoduchá, prostě přičteme číslo 26. Tato situace nastává typicky při dešifrování. Velice důležité je používat klíč v rozsahu 1 – 25, jinak by nedošlo k zašifrování. Příklad: 1+26 = 27 a 27/ 26 = 1, zbyde 1. Nic jsme nezašifrovali.

Ukázkové texty: OT: AHOJ
ŠT: elsn

Nutno poznamenat, že Caesarova šifra je velmi snadno prolomitelná, ať už hrubou silou, prostě vyzkoušíme všechny klíče, není jich moc. Nebo frekvenční analýzou. Proto se k reálnému nasazení rozhodně nehodí, ale pro výukové účely postačí.

Pro snadné šifrování a dešifrování jsem si udělal malý prográmek v Javě. Můj prográmek umožňuje šifrovat i číslice, moje abceda má tedy 36 znaků. Použití je doufám velice snadné.

3 thoughts on “Caesarova šifra

  1. Wow! Přesně takovýhle program jsem dělal loni v C++ na soutěži v programování 😀 Zadání bylo udělat šifrovací program, použil jsem stejný algoritmus jako ty i s klíčem, dokonce sem v nápovědě vysvětlil jeho princip, ale plný počet bodů mi zmetek nedal, ani mi nebyl schopný říct proč 😀

  2. Ahoj mám caesarovu šifru jako práci. Ale jsem uplnej začátečník a moc si nevím rady jak mám začít. A ten tvůj prográmek je přesně ono. Jen bych to neměl dělat takhle graficky ale v Netbeans. Díky

Leave a Reply

Your email address will not be published. Required fields are marked *