Atbash šifra a C#


Co je Atbash šifra?

Atbash šifra je jedna z nejstarších známých substitučních šifer. Jde o jednoduchou monoalfabetickou šifru, která pracuje s převrácenou abecedou. To znamená, že každé písmeno v otevřeném textu je nahrazeno písmenem opačným z abecedy. Například v anglické abecedě A se stane Z, B se stane Y, C se stane X, a tak dále.

Atbash šifra byla známa už ve starověkém Izraeli a používala se pro kódování textů hebrejské Bible.

Princip fungování

V Atbash šifře je každý znak mapován na opačný znak v abecedě.

  • Pokud používáme anglickou abecedu (26 písmen):
    • A ↔ Z
    • B ↔ Y
    • C ↔ X
    • M ↔ N

Šifrování i dešifrování je identické – prostě převedeme písmeno na jeho „opačný pár“.

Bezpečnost Atbash šifry

Atbash šifra je velmi jednoduchá a snadno prolomitelná. Neexistuje žádný klíč, kromě znalosti principu převrácení abecedy.

  • Hrubá síla není potřeba, protože existuje jen jedna možnost šifrování.
  • Frekvenční analýza jazyka umožňuje rychle zjistit původní text.

Dnes je Atbash zajímavá hlavně historicky a didakticky, protože ukazuje princip substitučních šifer.

Názorný příklad

  • Otevřený text: HELLO
  • Šifrovaný text: SVOOL

Každé písmeno je nahrazeno písmenem opačného pořadí:

  • H → S
  • E → V
  • L → O
  • L → O
  • O → L

Implementace Atbash šifry v C#

using System;
using System.Text;

namespace AtbashCipher
{
    internal class Program
    {
        private static string EncryptDecrypt(string input)
        {
            var result = new StringBuilder();

            foreach (var c in input)
            {
                if (char.IsLetter(c))
                {
                    var d = char.IsUpper(c) ? 'A' : 'a';
                    var offset = c - d;
                    var transformed = (char)(d + (25 - offset)); // 25 = 26 - 1
                    result.Append(transformed);
                }
                else
                {
                    result.Append(c);
                }
            }

            return result.ToString();
        }

        private static void Main(string[] args)
        {
            var original = "HELLO WORLD";

            var encrypted = EncryptDecrypt(original);
            var decrypted = EncryptDecrypt(encrypted);

            Console.WriteLine("Original: " + original);
            Console.WriteLine("Encrypted: " + encrypted);
            Console.WriteLine("Decrypted: " + decrypted);
        }
    }
}
  • Funkce EncryptDecrypt šifruje i dešifruje stejnou logikou.
  • Příklady ukazují, že šifra je symetrická – stačí aplikovat stejnou funkci dvakrát a získáš původní text.

Závěr

Atbash šifra je fascinující historický příklad monoalfabetické substituce. I když dnes není bezpečná, ukazuje základní principy substitučních šifer a poskytuje jednoduchou cestu k pochopení kódování textu. Implementace v C# demonstruje, jak lze šifru programovat a používat pro základní šifrovací a dešifrovací úkoly.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *