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

import string

def szyfruj_atbash(tekst):
  wynik = ''
  for litera in tekst:
    if litera in string.ascii_lowercase:
      wynik += string.ascii_lowercase[25 - string.ascii_lowercase.index(litera)]
    elif litera in string.ascii_uppercase:
       wynik += string.ascii_uppercase[25 - string.ascii_uppercase.index(litera)]
    else:
      wynik += litera
  return wynik

def odszyfruj_atbash(tekst):
  return szyfruj_atbash(tekst)  # Atbash jest samoodwrotny

# Przyk艂adowe u偶ycie
tekst_jawny = "Ala ma kota."
tekst_zaszyfrowany = szyfruj_atbash(tekst_jawny)
print(f"Tekst jawny: {tekst_jawny}")
print(f"Tekst zaszyfrowany: {tekst_zaszyfrowany}")

tekst_odszyfrowany = odszyfruj_atbash(tekst_zaszyfrowany)
print(f"Tekst odszyfrowany: {tekst_odszyfrowany}")

猬嗭笍猬嗭笍猬嗭笍 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.