A titkosítás története során számos technika született annak érdekében, hogy az információ biztonságosan eljuthasson a címzettjéhez anélkül, hogy illetéktelenek értelmezni tudnák azt. Az egyik legrégebbi és legismertebb módszer a Caesar-kód, amely Julius Caesar római államférfi nevéhez fűződik, és amely egyszerű eltolási algoritmuson alapul. Ebben a cikkben bemutatjuk, hogyan valósítható meg a Caesar-kód a PowerShell programozási nyelven keresztül.
Mi a Caesar-kód?
A Caesar-kód egy típusa a szubsztitúciós titkosításnak, ahol minden betűt az ábécében egy előre meghatározott számmal eltolnak. Például, ha az eltolás értéke 3, akkor az ‘A’ betű ‘D’-vé, a ‘B’ ‘E’-vé válik és így tovább. A titkosítási folyamat reverzibilis, vagyis a titkosított szöveg visszafejthető ugyanezen eltolás értékének alkalmazásával, csak éppen ellentétes irányba.
Az eltolás implementálása
PowerShell használatával egyszerűen implementálhatjuk ezt a titkosítási módszert. Az első lépés a titkosítandó szöveg és az eltolás mértékének megadása.
function Caesar-Kodol {
param (
[String]$Szoveg,
[Int]$Eltolas
)
$titkositottSzoveg = ""
foreach ($betu in $Szoveg.ToCharArray()) {
if ($betu -match '[a-z]') {
$titkositottSzoveg += char
[Math]::Abs((([int]$betu - 97 + $Eltolas) % 26) + 97)
}
elseif ($betu -match '[A-Z]') {
$titkositottSzoveg += char
[Math]::Abs((([int]$betu - 65 + $Eltolas) % 26) + 65)
}
else {
$titkositottSzoveg += $betu
}
}
return $titkositottSzoveg
}
Ebben a példában a Caesar-Kodol függvény fogad egy szöveget és egy eltolás értéket. A szöveg minden karakterén iterálva ellenőrzi, hogy az adott karakter kis- vagy nagybetű-e, és alkalmazza a megfelelő eltolást. Amennyiben a karakter nem betű (írásjelek, számok stb.), úgy az eredeti karakter kerül a titkosított szövegbe.
A titkosított szöveg dekódolása
A dekódolás hasonló elven működik, csak az eltolás értékét negatívvá tesszük.
function Caesar-Dekodol {
param (
[String]$TitkositottSzoveg,
[Int]$Eltolas
)
return Caesar-Kodol -Szoveg $TitkositottSzoveg -Eltolas (-$Eltolas)
}
Ebben az esetben a Caesar-Dekodol függvény a Caesar-Kodol függvényt hívja meg, csak az eltolás értékét negatívra állítva, ezzel ellentétes irányú eltolást végezve, amivel visszafejthetővé válik a titkosított szöveg.
Példák
$eredetiSzoveg = "Hello PowerShell"
$eltolas = 3
$titkositott = Caesar-Kodol -Szoveg $eredetiSzoveg -Eltolas $eltolas
$dekodolt = Caesar-Dekodol -TitkositottSzoveg $titkositott -Eltolas $eltolas
Write-Host "Eredeti szöveg: $eredetiSzoveg"
Write-Host "Titkosított szöveg: $titkositott"
Write-Host "Dekódolt szöveg: $dekodolt"
Ebben a példában a Hello PowerShell szöveget titkosítjuk 3-as eltolással, majd dekódoljuk ugyanezzel az eltolással. Az eredmény megmutatja, hogyan működik a Caesar-kód a gyakorlatban.
A Caesar-kód egy egyszerű, de történelmileg jelentős titkosítási módszer, amelyet ma már nem használnak biztonságos kommunikációra, de kiváló tanulóeszköz a titkosítás alapelveinek megértésére. PowerShellben való megvalósítása nem csak a kódolási technika gyakorlását kínálja, hanem a PowerShell programozási környezet mélyebb megismerését is lehetővé teszi.