Caesarova šifra a C#

Co je Caesarova šifra?
Caesarova šifra je jedna z nejstarších známých šifrovacích technik. Jde o typ substituční šifry, která funguje posunutím písmen v textu o fixní počet pozic v abecedě. Například, s posunem o 3, A se stane D, B se stane E, a tak dále. Tato šifra byla pojmenována po Juliu Caesarovi, který ji údajně používal pro ochranu důležitých vojenských zpráv.
Princip fungování
V Caesarově šifře je každé písmeno v otevřeném textu posunuto o pevný počet míst dolů nebo nahoru v abecedním řádu. Při šifrování se text transformuje použitím šifrovacího klíče, který určuje počet pozic, o které se písmena posunou. Při dešifrování se tento proces obrátí pomocí dešifrovacího klíče, který je typicky stejný jako šifrovací klíč.
Bezpečnost Caesarovy šifry
Ačkoli byla Caesarova šifra v době svého vzniku považována za dostatečně bezpečnou, dnes je považována za velmi slabou. Hlavním problémem je její předvídatelnost a malý počet možných klíčů (v abecedě s 26 písmeny je to 26 možných posunů). To znamená, že šifru lze snadno prolomit prostým prozkoumáním všech možných klíčů, což je metoda známá jako hrubá síla.
Názorné příklady
Příklad 1: Posun o 3
- Text: „ABCD“
- Posun: 3
- Šifrovaný text: „DEFG“
V tomto příkladu je každé písmeno posunuto o tři pozice vpřed v abecedě, takže A se stává D, B se stává E, atd.
Příklad 2: Dekódování textu
- Šifrovaný text: „KHOOR“
- Posun: 3
- Dešifrovaný text: „HELLO“
Tento příklad ukazuje, jak lze dešifrovat šifrovaný text „KHOOR“ posunutím každého písmene zpět o tři pozice, čímž se získá původní zpráva „HELLO“.
Implementace Caesarovy šifry v C#
using System;
namespace CaesarCipher;
internal class Program
{
private static string Encrypt(string input, int shift)
{
var result = "";
foreach (var c in input)
if (char.IsLetter(c))
{
var d = char.IsUpper(c) ? 'A' : 'a';
result += (char)((c + shift - d) % 26 + d);
}
else
{
result += c;
}
return result;
}
private static string Decrypt(string input, int shift)
{
return Encrypt(input, 26 - shift);
}
private static void Main(string[] args)
{
var original = "HELLO";
var key = 3;
var encrypted = Encrypt(original, key);
var decrypted = Decrypt(encrypted, key);
Console.WriteLine($"Original: {original}");
Console.WriteLine($"Encrypted: {encrypted}");
Console.WriteLine($"Decrypted: {decrypted}");
}
}
Závěr
Caesarova šifra je fascinující příklad rané kryptografie, přestože je dnes snadné ji prolomit. Její principy jsou základem pro pochopení modernějších a bezpečnějších šifrovacích metod. Implementace v C# ukazuje základní principy práce s textem a transformace znaků, které jsou aplikovatelné v mnoha dalších kryptografických algoritmů. Příklady ukazují způsob, jakým Caesarova šifra funguje, a poskytují konkrétní představu o jejích možnostech a omezeních. Tento článek poskytuje základní přehled o Caesarově šifře, ale kryptografie je hluboké a rozsáhlé pole, a existuje mnoho dalších technik a algoritmů, které jsou bezpečnější a složitější. Caesarova šifra slouží jako výborný úvod do světa kryptografie a je skvělým výchozím bodem pro ty, kteří se chtějí do tohoto tématu ponořit hlouběji.