IT rekvalifikácia. Seniorní programátori zarábajú až 6 000 €/mesiac a rekvalifikácia je prvým krokom. Zisti, ako na to!

3. diel - Ukážka jednoduchej šifrace textu Caesarovho šifra

V minulej lekcii, Ukážka jednoduchej šifrace textu Albertiho šifra , sme si ukázali šifru Albertiho.

Caesarova šifrace textu spočíva v posune každého znaku v zadanom slove práve o zadaný číselný počet. Ak napríklad zadáte slovo 'ahoj' a zvolíte posun o jeden znak. Potom sa s týmto slovom stane postupne toto:

'a' sa prevedie na číselnú asciu hodnotu => '97' k tomuto číslu sa pripočíta zvolený posun v našom prípade '1' == '98', potom sa asciu hodnotu prevedie späť na písmeno => 'b' a postúpi sa k ďalšiemu písmenu

Ak by sme chceli napríklad posunúť 'z' o 4 miesta tak si môžete všimnúť že v ascii tabuľke je '~' lenže v Caesarovej šifre je posun cez 'z' na 'a' takže by nám malo vyjsť 'e', preto keď je rozsah väčší ako 122 ('z') tak sa od výsledku odpočíta 25 (počet písmen v anglickej abecede je 26 a práve s jedným písmenom operujeme preto ho nezapočítavame) Toho sa tiež využíva v šifrovaní pomocou 'ROT13' kde sa všetky znaky posúvajú o 13 znakov tým pádom je to šifrace aj dešifrace. V linuxoch je priamo utilita zvaná tr ktorá vám text takto zašifruje. Caesarovho šifra pokiaľ zvolíte posun o 13 znakov takto samozrejme tiež funguje.

A H O J
B H O J
B Aj O J
B Aj P J
B Aj P K
Tu si môžete vyskúšať Caesarovu šifru v praxi.

Ak by sme chceli napísať algoritmus na túto šifru v PHP by to vyzeralo nejako takto:
(zbavíme sa najprv diakritiky a text prevedieme na malé písmená -> iconv, strtolower)

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

Krásne dva riadky kódu. Avšak je tu problém čo keď tam napíšem 'z' a dám posun o 4 ja nechcem predsa '~' ja chcem 'e'

Musíme náš kód rozšíriť o ďalšie dva riadky

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

Pozn.: Dešifracia prebieha obdobne akurát zmeníte v cykle znamienko na '-', v podmienke otočíte zobáčik a prepíšete 'z' na 'a' a $thumb budeme teraz pričítať

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

V ďalšej lekcii, Pod pokrievkou šifrovacieho algoritmu RC4 , si ukážeme algoritmus RC4, ktorý sa používa v zabezpečení WEP.


 

Predchádzajúci článok
Ukážka jednoduchej šifrace textu Albertiho šifra
Všetky články v sekcii
Kryptografie
Preskočiť článok
(neodporúčame)
Pod pokrievkou šifrovacieho algoritmu RC4
Článok pre vás napísal David Jančík
Avatar
Užívateľské hodnotenie:
Ešte nikto nehodnotil, buď prvý!
Autor je vášnivý programátor. Nezná slovo "nelze", nebojí se zkoušet nepoznané a pronikat do nových technologií.
Aktivity