Szyfr Cezara

Szyfr Cezara polega na przesuwaniu każdej litery tekstu o ustaloną liczbę miejsc w alfabecie. Jeśli przesunięcie wynosi 3, każda litera zostaje zastąpiona trzecią kolejną literą z wybranego alfabetu. Deszyfrowanie działa odwrotnie: litery przesuwane są o tę samą liczbę miejsc wstecz. Znaki, które nie są literami, na przykład spacje, cyfry i znaki interpunkcyjne, pozostają bez zmian.

Program w Pythonie

W linijkach 1-16 znajduje się funkcja szyfr_cezara, czyli najważniejsza część programu. To właśnie w tej funkcji zapisany jest cały sposób działania szyfru Cezara. Funkcja otrzymuje tekst, liczbę przesunięć oraz tryb działania programu.

W linijce 2 zapisany jest alfabet, którego używa program. Dzięki temu program wie, w jakiej kolejności występują litery. W linijce 3 tworzona jest pusta zmienna wynik, do której będą dopisywane kolejne litery po zaszyfrowaniu lub odszyfrowaniu.

W linijkach 5-6 program sprawdza, czy wybrano tryb deszyfruj. Jeśli tak, to przesunięcie zostaje zamienione na liczbę przeciwną. Dzięki temu program przesuwa litery w drugą stronę i może odczytać zaszyfrowaną wiadomość.

W linijkach 8-14 program przechodzi po kolei przez każdy znak wiadomości. Najpierw tekst zostaje zamieniony na wielkie litery, a potem pętla sprawdza każdą literę osobno. Jeśli znak znajduje się w alfabecie, program odszukuje jego aktualne miejsce.

Następnie program dodaje do tego miejsca wartość przesunięcia. Przy szyfrowaniu litera przesuwa się do przodu, a przy deszyfrowaniu do tyłu, ponieważ wcześniej przesunięcie zostało zamienione na liczbę ujemną. Zapis % len(alfabet) sprawia, że alfabet działa jak koło: po dojściu do końca wracamy na początek, a przy cofnięciu przed początek przechodzimy na koniec.

Na koniec program pobiera literę z nowego miejsca w alfabecie i dopisuje ją do zmiennej wynik. Jeśli znak nie znajduje się w alfabecie, na przykład jest spacją, cyfrą albo przecinkiem, zostaje dopisany bez zmian. Dzięki temu program szyfruje tylko litery, a resztę tekstu zostawia taką samą.

W linijce 16 funkcja zwraca gotowy wynik, czyli zaszyfrowaną albo odszyfrowaną wiadomość.

Po zakończeniu funkcji zaczyna się część programu, w której korzystamy z tej funkcji. W linijce 18 tworzona jest zmienna tajemna_wiadomosc. To w niej zapisany jest tekst, który chcemy zaszyfrować.

W linijkach 20-21 program wywołuje funkcję szyfr_cezara, szyfruje wiadomość z przesunięciem o 3 miejsca, zapisuje wynik w zmiennej zaszyfrowana, a następnie wypisuje go na ekranie.

W linijkach 23-24 program ponownie wywołuje tę samą funkcję, ale tym razem w trybie deszyfruj. W ten sposób wcześniej zaszyfrowany tekst zostaje odszyfrowany i zapisany w zmiennej odszyfrowana. Na końcu program wypisuje odczytaną wiadomość na ekranie.

  1. def szyfr_cezara(tekst, przesuniecie, tryb):
  2. alfabet = "AĄBCĆDEĘFGHIJKLŁMNŃOÓPRSŚTUWYZŹŻ"
  3. wynik = ""
  4. if tryb == "deszyfruj":
  5. przesuniecie = -przesuniecie
  6. for znak in tekst.upper():
  7. if znak in alfabet:
  8. miejsce = alfabet.index(znak)
  9. nowe_miejsce = (miejsce + przesuniecie) % len(alfabet)
  10. wynik = wynik + alfabet[nowe_miejsce]
  11. else:
  12. wynik = wynik + znak
  13. return wynik
  14. tajemna_wiadomosc = "TAJNA WIADOMOŚĆ"
  15. zaszyfrowana = szyfr_cezara(tajemna_wiadomosc, 3, "szyfruj")
  16. print("Zaszyfrowana wiadomość:", zaszyfrowana)
  17. odszyfrowana = szyfr_cezara(zaszyfrowana, 3, "deszyfruj")
  18. print("Odszyfrowana wiadomość:", odszyfrowana)

Szyfr Cezara – narzędzie

Szyfruj Tryb
3 Przesunięcie
Polski Alfabet

Wiadomość

0 znaków

Wynik

0 znaków

Przewijanie do góry