arrow_back Powrót do aplikacji

Szyfr Atbash

WPROWADZENIE

Szyfr Atbash to prosty szyfr podstawieniowy, pochodzący z tradycji hebrajskiej. Jego działanie polega na zamianie każdej litery alfabetu na literę, która leży w tej samej odległości od końca alfabetu. Innymi słowy, alfabet jest „odwracany”. Np. A zamieniane jest na Z, B na Y, C na X itd. Szyfr Atbash jest bardzo prosty w użyciu, ale również bardzo łatwy do złamania.

Zasada działania

Aby zaszyfrować wiadomość za pomocą szyfru Atbash, wystarczy zamienić każdą literę na odpowiadającą jej literę z odwróconego alfabetu.

Tekst jawnyABCDEFGHIJKLM
Tekst zaszyfrowanyZYXWVUTSRQPON
Tekst jawnyNOPQRSTUVWXYZ
Tekst zaszyfrowanyMLKJIHGFEDCBA

Szyfr Atbash jest niezwykle łatwy do złamania. Ponieważ jest to szyfr podstawieniowy, zachowuje on częstotliwość występowania liter. Oznacza to, że litera, która występuje najczęściej w tekście zaszyfrowanym, odpowiada literze, która występuje najczęściej w danym języku. W języku polskim są to litery takie jak „a”, „i”, „o”, „e”, „z”. Analiza częstości liter pozwala na szybkie rozszyfrowanie tekstu. Jednak w przypadku Atbash, metoda analizy częstości liter nie jest konieczna, ponieważ wystarczy odwrócić alfabet.


KOD W JĘZYKU PYTHON

Zobacz w Google Colaboratory


JAK DZIAŁA PROGRAM?

  1. Import modułu string:
    • import string – Ta linijka importuje moduł string, który zawiera predefiniowane stałe tekstowe, takie jak wszystkie małe litery (string.ascii_lowercase) i wszystkie wielkie litery (string.ascii_uppercase). Te stałe są używane w kodzie do implementacji szyfru Atbash.
  2. Funkcja szyfruj_atbash (szyfrowanie):
    • def szyfruj_atbash(tekst): – Definiuje funkcję o nazwie szyfruj_atbash, która przyjmuje jeden argument: tekst (tekst do zaszyfrowania).
    • wynik = '' – Tworzy pustą zmienną tekstową wynik, która będzie przechowywać zaszyfrowany tekst.
    • for litera in tekst: – Pętla, która iteruje przez każdą literę (litera) w podanym tekście (tekst).
      • if litera in string.ascii_lowercase: – Jeśli litera jest małą literą…
        • wynik += string.ascii_lowercase[25 - string.ascii_lowercase.index(litera)] – …dodaje do wynik literę Atbash, która jest obliczana poprzez odjęcie indeksu litery w alfabecie od 25 (odwrócenie alfabetu).
      • elif litera in string.ascii_uppercase: – Jeśli litera jest wielką literą…
        • wynik += string.ascii_uppercase[25 - string.ascii_uppercase.index(litera)] – …dodaje do wynik literę Atbash, analogicznie jak dla małych liter.
      • else: – W przeciwnym razie (jeśli litera nie jest literą, np. spacja, znak interpunkcyjny)…
        • wynik += litera – …dodaje litera do wynik bez zmian.
    • return wynik – Zwraca zaszyfrowany tekst (wynik).
  3. Funkcja odszyfruj_atbash (odszyfrowywanie):
    • def odszyfruj_atbash(tekst): – Definiuje funkcję o nazwie odszyfruj_atbash, która przyjmuje jeden argument: tekst (tekst do odszyfrowania).
    • return szyfruj_atbash(tekst) – Wywołuje funkcję szyfruj_atbash z podanym tekstem. Ponieważ szyfr Atbash jest samoodwrotny (odszyfrowywanie jest tym samym co szyfrowanie), ta linijka skutecznie odszyfrowuje tekst.
  4. Użycie funkcji:
    • tekst_jawny = "Ala ma kota." – Definiuje zmienną tekst_jawny z przykładowym tekstem do zaszyfrowania.
    • tekst_zaszyfrowany = szyfruj_atbash(tekst_jawny) – Szyfruje tekst_jawny za pomocą funkcji szyfruj_atbash i zapisuje wynik w zmiennej tekst_zaszyfrowany.
    • print(f"Tekst jawny: {tekst_jawny}") – Wyświetla oryginalny tekst.
    • print(f"Tekst zaszyfrowany: {tekst_zaszyfrowany}") – Wyświetla zaszyfrowany tekst.
    • tekst_odszyfrowany = odszyfruj_atbash(tekst_zaszyfrowany) – Odszyfrowuje tekst_zaszyfrowany za pomocą funkcji odszyfruj_atbash i zapisuje wynik w zmiennej tekst_odszyfrowany.
    • print(f"Tekst odszyfrowany: {tekst_odszyfrowany}") – Wyświetla odszyfrowany tekst.
arrow_back Powrót do aplikacji