Przejdź do głównej zawartości

4 klasa. Temat 26. Programowanie algorytmu szyfrowania tekstu metodą podstawieniową

 

Krok 1. Przypominamy na czym polega szyfrowania
Jedna z najprostszych metod kryptograficznych - Szyfr Cezara (znany również jako szyfr podstawieniowy).

Krok 2. Program szyfrujący tekst przy użyciu szyfru Cezara
Definiujemy funkcję cezar, która przyjmuje dwa argumenty: massage — tekst do zaszyfrowania oraz key — wartość przesunięcia.

def cezar(massage, key):

Tworzymy zmienną crypt, która będzie zawierać zaszyfrowany tekst.

    crypt = ""
   
Iterujemy przez każdą literę w tekście massage.
 
for letter in massage:
        
Sprawdzamy, czy dodanie wartości przesunięcia key do kodu ASCII litery letter przekracza kod ASCII litery 'z'. Jeśli tak, dodajemy do crypt literę, której kod ASCII został przesunięty o key - 26, aby zwrócić się do litery na początku alfabetu i kontynuować przesunięcie.
if ord(letter) + key > ord ('z'):
       crypt += chr(ord(letter) + key - 26)
else:
       crypt += chr(ord(letter) + key)
    
Jeśli dodanie wartości przesunięcia key do kodu ASCII litery letter nie przekracza kodu ASCII litery 'z', dodajemy do crypt literę, której kod ASCII został przesunięty o key.

Zwracamy zaszyfrowany tekst.
return crypt

Wywołujemy funkcję cezar z tekstem do zaszyfrowania "sabskrybuj" i wartością przesunięcia 3. Następnie wyświetlamy zaszyfrowany tekst.

print(cezar("sabskrybuj", 3))

Krok 3. Program deszyfrujący tekst przy użyciu szyfru Cezara.

Definiujemy funkcję decezar, która przyjmuje dwa argumenty: massage - zaszyfrowany tekst do odszyfrowania oraz key - wartość przesunięcia:
def decezar(massage, key):

Tworzymy zmienną crypt, która będzie zawierać odszyfrowany tekst.
    for letter in massage:

Iterujemy przez każdą literę w zaszyfrowanym tekście massage.

        if ord(letter) - key < ord ('a'):
           crypt += chr(ord(letter) - key + 26)

Sprawdzamy, czy odjęcie wartości przesunięcia key od kodu ASCII litery letter mniejsze niż kod ASCII litery 'a'. Jeśli tak, dodajemy do crypt literę, której kod ASCII został przesunięty o key - 26, aby zwrócić się do litery na końcu alfabetu i kontynuować przesunięcie.
        else:
            crypt += chr(ord(letter) - key)

Jeśli odjęcie wartości przesunięcia key od kodu ASCII litery letter nie jest mniejsze niż kod ASCII litery 'a', dodajemy do crypt literę, której kod ASCII został przesunięty o key.

Zwracamy odszyfrowany tekst.

    return crypt

Wywołujemy funkcję decezar z zaszyfrowanym tekstem "vdevnubexm" i wartością przesunięcia 3. Następnie wyświetlamy odszyfrowany tekst.

print(decezar("vdevnubexm", 3))




Komentarze