A Caesar-kód vagy Caesar-rejtjel az egyik legegyszerűbb és legelterjedtebb titkosírási módszer. Ez egy helyettesítő rejtjel, ami azt jelenti, hogy minden egyes betűt az ábécében egy tőle meghatározott távolságra lévő betűvel kell helyettesíteni. Így például, ha mondjuk az eltolódás 3, az angol ábécében az A-t a D-vel, a B-t az E-vel stb. kell helyettesíteni. A magyar ábécérevonatkoztatva ez az A betű helyett C-t, az Á betű helyett CS-t jelent. Az elnevezését Julius Caesar után kapta, aki ennek a segítségével kommunikált tábornokaival.
A Caesar által használt titkosírási eljárást több bonyolultabb kriptográfiai módszerbe is beépítették, így a Vigenère-rejtjelbe és a ROT13 rendszerbe. Azonban, mint bármely más ábécé-helyettesítési módszerről, a Caesar-rejtjelről is elmondható, hogy nagyon könnyű feltörni, így a kommunikációhoz nem nyújt igazi biztonságot.
Caesar kódolás megvalósítása
Java programozási nyelven
public class Caesar { public static String caesarCode(String input, char offset) { char[] out = input.toUpperCase().toCharArray(); for (int i = 0; i < out.length; i++) { out[i] += offset - 'A'; if (out[i] > 'Z') out[i] -= 'Z' - 'A' + 1; } return new String(out);
} }
Forrás: wikipédia
A Caesar-rejtjel
Az úgynevezett Caesar-rejtjel, egy eljárás, amit Julius Caesar is használt. Itt Caesar az ábécét egy bizonyos számmal eltolta, azaz ha az n. betűből az m. lett, akkor az n+1-edikből m+1 k-s maradéka, ahol k az ábécé hossza (például az angol ábécénél 26 betű).[15] [16] Példa a 26 betűből álló angol ábécé esetén:
Betűk megfeleltetése | Kódolás | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Augustus ezen annyit változtatott, hogy a az eltolás egy karakternyi volt, azaz az A helyett B, a B helyett C, …, a Z helyett A szerepelt. Emellett az X helyett mindig AA-t írt.
A napjainkban is gyakran használják az 1980-as években elterjedt ROT13 (rotate by 13 places, 13 hellyel forgatás) nevű speciális Caesar-kódot fórumokban. Ez tizenhárommal van eltolva, így a dekódolás is pontosan ugyanaz a művelet. Egy másik változata a ROT47, amit az ASCII 33-as (!) és 126-os (~) jelű karaktere között hajtanak végre. Ez 47 hellyel van eltolva, ami hasonló tulajdonságokat eredményez, mint a ROT13.
Általános behelyettesítéses algoritmus
Ez az algoritmus kiküszöböli a Caesar eltolásos ábécéjének gyengeségét, ugyanis a kódábécé a nyílt ábécé bármelyik tetszőleges átrendezése lehet. Hátránya, hogy a véletlenszerű párosítás miatt a kódot nehezen lehet fejben tartani.
Általános behelyettesítéses algoritmus kulcsszó vagy kulcsmondat alkalmazásával
Az előző módszeren alapuló algoritmus, ám a kulcsmondat alkalmazásának következtében a kódábécé megjegyzése egyszerűbbé válik. A kódábécé a kulcsmondat különböző betűivel fog kezdődni, majd annak utolsó betűjétől a normál ábécé szerint folytatódik (természetesen a már felhasznált betűk kihagyásával). Igaz ugyan, hogy e megszorítások miatt a lehetséges kulcsok számának csökken, de a feltörés szempontjából nem számottevő mértékben. (Bár észrevéve az értelmes szavakat vagy legalábbis a részeit a megfejtés egy része után könnyebb lesz a megfejtés.) Példa a 26 betűből álló angol ábécé esetén:
Betűk megfeleltetése | Kódolás | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
|
Forrás Wikipédia