Caesarův kodér
Program slouží ke kódování a dekódovaní krátkých zpráv. Je založen na velice jednoduchém principu Caesarova kódování Jde o jednoduchou substituční šifru, která vznikne posunem abeced vzájemně pod sebou.
| Otevřená 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 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Zakódovaná abeceda: | x | y | z | a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w |
Tím vznikne na první pohled nečitelný text
| Otevřený text: | Caesaruv koder funguje spolehlive |
|---|---|
| Zakódovaný text: | Zxbpxors hlabo crkdrgb pmlibeifsb |
(zakódováno podle předchozí tabulky s posunem o 23 pismen)
Pro dekódování jsem využil jednoduchý princip frekvenční analízy kódového textu. Spočítám si množství výskytu jednotlivých písmen a pak tento profil porovnám s profilem průměrného nekódovaného psaní.
| Abeceda: | a | b | c | d | e | f | g | h | i | j | k | l | m |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| četnost písmen v %: | 8.2 | 1.5 | 2.8 | 4.3 | 12.7 | 2.2 | 2.0 | 6.1 | 7.0 | 0.2 | 0.8 | 4.0 | 2.4 |
| Abeceda: | n | o | p | q | r | s | t | u | v | w | x | y | z |
| četnost písmen v %: | 6.7 | 7.5 | 4.9 | 0.1 | 6.0 | 6.3 | 9.1 | 2.8 | 1.0 | 2.4 | 0.2 | 2.0 | 0.1 |
Postupným posouváním profilů vyhodnocuji, jak se liší. U nejpodobnějšího zjistím, o kolik písmenek jsem posunut a provedu dekódování.
a) na horním grafu je četnost písmen v průměrném textu, b) na spodním grafu je četnost písmen v zakódovaném textu z předchozí ukázky
program pouze nalezne vhodné posunutí těchto grafů (korelaci).
Screenshot programu
Četnost písmen použitá pro dekódování je odvozena od anglicky napsaných textů, ale naštěstí funguje i pro česky psaný text. Ve zdrojáku sice naleznete četnost pro český jazyk, ale není použita. Program správně unguje pouze s písmeny anglické abecedy. Při kódování českých znaků by nastalo mnoho problémů a já sem je proto neřešil.
Pro použití programu stačí nastavit směr převodu a dále posunutí znaků – pro kódování (pro dekódování stačí po napsání zašifrovaného textu stisknout „key decode“), všechno ostatní zařídí program sám. Program samozřejmě neumí dekódovat vše, protože některé příliš krátké texty jsou tak odlišné od průměru, že se vyhodnotí chybně.

