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 jawny | A | B | C | D | E | F | G | H | I | J | K | L | M |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Tekst zaszyfrowany | Z | Y | X | W | V | U | T | S | R | Q | P | O | N |
| Tekst jawny | N | O | P | Q | R | S | T | U | V | W | X | Y | Z |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Tekst zaszyfrowany | M | L | K | J | I | H | G | F | E | D | C | B | A |
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?
- 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.
- 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).
- 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.
- 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.












Leave a Reply