NOVINKA – Víkendový online kurz Software tester, který tě posune dál. Zjisti, jak na to!
NOVINKA - Online rekvalifikační kurz Java programátor. Oblíbená a studenty ověřená rekvalifikace - nyní i online.

Lekce 3 - Ukázka jednoduché šifrace textu Caesarova šifra

V minulé lekci, Ukázka jednoduché šifrace textu Albertiho šifra, jsme si ukázali šifru Albertiho.

Caesarova šifrace textu spočívá v posunu každého znaku v zadaném slově právě o zadaný číselný počet. Pokud například zadáte slovo 'ahoj' a zvolíte posun o jeden znak. Pak se s tímto slovem stane postupně toto:

'a' se převede na číselnou ascii hodnotu => '97' k tomuto číslu se přičte zvolený posun v našem případě '1' == '98', poté se ascii hodnota převede zpět na písmeno => 'b' a postoupí se k dalšímu písmenu

Pokud bychom chtěli například posunout 'z' o 4 místa tak si můžete všimnout že v ascii tabulce je '~' jenže v Caesarově šifře je posun přes 'z' na 'a' takže by nám mělo vyjít 'e', proto když je rozsah větší jak 122 ('z') tak se od výsledku odečte 25 (počet písmen v anglické abecedě je 26 a právě s jedním písmenem operujeme proto ho nezapočítáváme) Toho se také využívá v šifrování pomocí 'ROT13' kde se všechny znaky posouvají o 13 znaků tím pádem je to šifrace i dešifrace. V linuxech je přímo utilita zvaná tr která vám text takto zašifruje. Caesarova šifra pokud zvolíte posun o 13 znaků takto samozřejmě také funguje.

A H O J
B H O J
B I O J
B I P J
B I P K

Zde si můžete vyzkoušet Caesarovu šifru v praxi.

Poku bychom chtěli napsat algoritmus na tuto šifru v PHP by to vypadalo nějak takhle:
(zbavíme se prvně diakritiky a text převedeme na malé písmena -> iconv, strtolower)

for($i=0;$i<strlen($text);$i++)
    $text[$i] = chr(ord($text[$i]) + $posun);

Krásné dva řádky kódu. Ovšem je tu problém co když tam napíšu 'z' a dám posun o 4 já nechci přece '~' já chci 'e'

Musíme náš kód rozšířit o další dva řádky

if (ord($text[$i]) > ord('z')) {
    $thumb = ord('z') - ord('a') + 1;
    $text[$i] = chr(ord($text[$i]) - $thumb);
}

Pozn.: Dešifrace probíha obdobně akorát změníte v cyklu znaménko na '-', v podmínce otočíte zobáček a přepíšete 'z' na 'a' a $thumb budeme teď přičítat

if (ord($text[$i]) < ord('a')) {
    $thumb = ord('z') - ord('a') + 1;
    $text[$i] = chr(ord($text[$i]) + $thumb);
}

V další lekci, Pod pokličkou šifrovacího algoritmu RC4, si ukážeme algoritmus RC4, který se používá v zabezpečení WEP.


 

Předchozí článek
Ukázka jednoduché šifrace textu Albertiho šifra
Všechny články v sekci
Kryptografie
Přeskočit článek
(nedoporučujeme)
Pod pokličkou šifrovacího algoritmu RC4
Článek pro vás napsal David Jančík
Avatar
Uživatelské hodnocení:
44 hlasů
Autor je vášnivý programátor. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.
Aktivity