Centrum wiedzy o technologiach i pracy w IT
szyfr cezara python

Zaszyfruj tekst w Pythonie. Oto instrukcja krok po kroku

Ostatnia aktualizacja 13 marca, 2024

Szyfr Cezara jest jedną z najstarszych i najprostszych metod szyfrowania tekstu. Został nazwany na cześć Juliusza Cezara, który używał tej techniki do zabezpieczania swoich prywatnych wiadomości. Szyfr polega na przesunięciu każdej litery alfabetu o ustaloną liczbę miejsc. Na przykład, przy przesunięciu o 3, litera A zostanie zastąpiona przez D, B przez E, a C przez F. Za pomocą Pythona możesz zastosować tę samą technikę szyfrowania. Poniżej podajemy dokładną instrukcję.

Nie udało się zapisać Twojej subskrypcji. Spróbuj ponownie.
Udało się! Widzimy się niebawem – newsletter wysyłamy w każdy wtorek

Otrzymuj za darmo unikalne poradniki, dane i wiedzę o pracy w IT – dostarczane co tydzień

Klikając “Zapisz mnie” wyrażasz zgodę na otrzymywanie e-maili od redakcji, a także ofert partnerów oraz akceptujesz naszą Politykę prywatności.

Szyfr Cezara w Pythonie – implementacja

Implementacja szyfru Cezara w Pythonie jest prostym zadaniem. Poniżej znajduje się przykładowy kod, który szyfruje i deszyfruje tekst przy użyciu tej metody.

Szyfrowanie

def szyfr_cezara_encrypt(text, przesuniecie):
    zaszyfrowany = ""
    for znak in text:
        if znak.isalpha():
            przesuniecie_znaku = ord(znak) + przesuniecie
            if znak.islower():
                if przesuniecie_znaku > ord('z'):
                    przesuniecie_znaku -= 26
            elif znak.isupper():
                if przesuniecie_znaku > ord('Z'):
                    przesuniecie_znaku -= 26
            zaszyfrowany += chr(przesuniecie_znaku)
        else:
            zaszyfrowany += znak
    return zaszyfrowany

Dla każdej litery w tekście funkcja przesuwa jej pozycję w alfabecie o określoną liczbę miejsc (przesuniecie), zwracając na koniec zaszyfrowany ciąg znaków.

Jeśli przesunięcie wykracza poza zakres alfabetu, funkcja automatycznie zapętla się do początku alfabetu. Znaki niebędące literami są dodawane do zaszyfrowanego tekstu bez zmian. W ten sposób kod efektywnie szyfruje alfabetyczne znaki, pozostawiając inne elementy tekstu nietknięte

Deszyfrowanie

Deszyfrowanie tekstu jest równie proste jak szyfrowanie, wymaga tylko odwrócenia kierunku przesunięcia.

def szyfr_cezara_decrypt(text, przesuniecie):
    odszyfrowany = ""
    for znak in text:
        if znak.isalpha():
            przesuniecie_znaku = ord(znak) - przesuniecie
            if znak.islower():
                if przesuniecie_znaku < ord('a'):
                    przesuniecie_znaku += 26
            elif znak.isupper():
                if przesuniecie_znaku < ord('A'):
                    przesuniecie_znaku += 26
            odszyfrowany += chr(przesuniecie_znaku)
        else:
            odszyfrowany += znak
    return odszyfrowany

Kod odszyfrowuje tekst poprzez przesunięcie każdej litery w przeciwnym kierunku do oryginalnego szyfrowania.

Dla każdej litery w tekście funkcja zmniejsza jej wartość ASCII o określoną liczbę miejsc (przesuniecie). Jeżeli przesunięcie powoduje wyjście wartości znaku poniżej zakresu alfabetu, następuje korekta przez dodanie 26, co pozwala na cykliczne przechodzenie przez alfabet.

Litery przetwarzają się z uwzględnieniem ich wielkości, a znaki niebędące literami dodają się do wynikowego tekstu bez zmian. W ten sposób funkcja przywraca oryginalny tekst z zaszyfrowanej wersji, zakładając zastosowanie tego samego przesunięcia.

Szyfr Cezara w Pythonie – przykłady

Szyfrowanie tekstu

Po zdefiniowaniu funkcji szyfr_cezara_encrypt można przystąpić do szyfrowania:

tekst_do_zaszyfrowania = "Szyfr Cezara jest prosty!"
przesuniecie = 3
zaszyfrowany_tekst = szyfr_cezara_encrypt(tekst_do_zaszyfrowania, przesuniecie)
print("Zaszyfrowany tekst:", zaszyfrowany_tekst)

Kod zakłada użycie szyfru Cezara do zaszyfrowania tekstu “Szyfr Cezara jest prosty!” z przesunięciem o 3 miejsca w alfabecie. Jeśli funkcja szyfr_cezara_encrypt działa poprawnie i przesuwa każdą literę alfabetu o trzy pozycje do przodu (np. A -> D, B -> E itd.), to kod prawidłowo zaszyfruje podany tekst i wyświetli zaszyfrowaną wiadomość.

Uwaga! Upewnij się, że funkcja szyfr_cezara_encrypt została zdefiniowana w podobny sposób do tego, jak zostało to przedstawione we wcześniejszych przykładach. Bez definicji tej funkcji, kod nie będzie działać, ponieważ Python nie będzie wiedział, co zrobić z wywołaniem szyfr_cezara_encrypt. Jeśli zdefiniowano funkcję poprawnie, kod zaszyfruje tekst i wyświetli wynik.

Deszyfrowanie tekstu

zaszyfrowany_tekst = "Vzciu Checdua mvhp survwca!"
przesuniecie = 3
odszyfrowany_tekst = szyfr_cezara_decrypt(zaszyfrowany_tekst, przesuniecie)
print("Odszyfrowany tekst:", odszyfrowany_tekst)


Ten fragment kodu deszyfruje tekst, używając przesunięcia równego 3. Zaszyfrowany tekst “Vzciu Checdua mvhp survwca!” jest przetwarzany przez funkcję szyfr_cezara_decrypt, który przesuwa każdą literę o 3 miejsca wstecz w alfabecie. Po deszyfrowaniu tekst jest wyświetla przywróconą oryginalną wiadomość.

Kod zakłada, że funkcja szyfr_cezara_decrypt jest zaimplementowana poprawnie i wykonuje odwrotne przesunięcie liter do tego użytego przy szyfrowaniu.

Bezpieczeństwo szyfru Cezara

Chociaż szyfr Cezara był skuteczny w czasach starożytnych, dzisiaj uważa się go za bardzo słabą formę szyfrowania. Jego główną słabością jest niewielka liczba możliwych kluczy szyfrujących (w przypadku alfabetu łacińskiego tylko 25), co sprawia, że szyfr jest podatny na ataki metodą brute force czy analizę częstotliwości występowania liter. Dlatego też w nowoczesnych aplikacjach szyfr ten służy głównie celom edukacyjnym lub rozrywkowym.

Dziękujemy, że przeczytałaś/eś nasz artykuł. Obserwuj EnterTheCode.pl w Wiadomościach Google, aby być na bieżąco.

Czytaj także:

Szyfrowanie danych – do czego jest wykorzystywane?

Szyfrowanie wiadomości – jak technologia chroni Twoje rozmowy?

Ransomware szyfruje nawet 100 000 plików w ciągu kilku minut

Total
0
Shares
_podobne artykuły