🗝️
AlgorytmySzyfr Cezara
Klasyka kryptografii. Poznaj zasadę przesuwania liter w alfabecie oraz pułapki związane z wykraczaniem poza literę Z.
Szyfr Cezara
Szyfr Cezara polega na zastąpieniu każdej litery tekstu jawnego – literą znajdującą się o ustaloną liczbę miejsc (klucz) dalej w alfabecie. Jest to najsłynniejszy i najprostszy szyfr w historii. Jeśli klucz k = 3, to literka A zmienia się w D, B w E, i tak dalej.
Cała trudność polega na przeliczaniu kodów ASCII, aby po przejściu poza 90 ('Z') "odjąć" odpowiednią wartość i wrócić na początek alfabetu.
Python
def szyfruj_cezar(tekst, klucz):
wynik = ""
klucz = klucz % 26
for znak in tekst:
if 'A' <= znak <= 'Z':
nowy_znak = chr(ord(znak) + klucz)
if nowy_znak > 'Z':
nowy_znak = chr(ord(nowy_znak) - 26)
wynik += nowy_znak
else:
wynik += znak
return wynik
print(szyfruj_cezar("MATURA", 3)) # PDWXUDC++
#include <iostream>
#include <string>
using namespace std;
string szyfrujCezar(string tekst, int k) {
string wynik = "";
k = k % 26;
for (int i = 0; i < tekst.length(); i++) {
if (tekst[i] >= 'A' && tekst[i] <= 'Z') {
char nowa = tekst[i] + k;
if (nowa > 'Z') nowa = nowa - 26;
wynik += nowa;
} else {
wynik += tekst[i];
}
}
return wynik;
}
int main() {
cout << szyfrujCezar("MATURA", 3) << endl;
return 0;
}[!TIP] Jak napisać Deszyfrowanie (rozszyfrowywanie)? Aby powrócić do oryginalnego tekstu, musimy cofnąć literki o 3 pozycje, czyli zastosować ten sam algorytm z kluczem ujemnym, np.
k = 26 - 3 = 23.
