Uogólniony szyfr Cezara – implementacja w języku C++

W przedstawionej implementacji przyjmiemy następujące założenia:

  • jako alfabetu będziemy używali alfabetu łacińskiego zawierającego 26 liter zapisanych za pomocą kodu ASCIIASCIIASCII,

  • nie uwzględniamy wielkości liter, przed zaszyfrowaniem zamienimy wprowadzony tekst na wielkie litery,

  • podczas szyfrowania wszystkie znaki niebędące wielkimi literami pozostawiamy w szyfrogramieszyfrogramszyfrogramie,

  • klucz może być dowolną liczbą całkowitą.

Specyfikacja algorytmu

Polecenie 1

Napisz program, który zaszyfruje podany tekst za pomocą uogólnionego szyfru Cezaraszyfr Cezaraszyfru Cezara i wypisze go na ekranie.

Specyfikacja problemu:

Dane:

  • tekst – ciąg znaków do zaszyfrowania

  • klucz – liczba całkowita określająca przesunięcie

Wynik:

  • ciąg znaków reprezentujący zaszyfrowany tekst

Zaczniemy od dodania niezbędnych bibliotek oraz zapisania nagłówka funkcji szyfruj.

Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny. Linia 2. kratka include otwórz nawias ostrokątny string zamknij nawias ostrokątny. Linia 3. using namespace std średnik. Linia 5. string szyfruj otwórz nawias okrągły string tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 7. zamknij nawias klamrowy.

Pierwszy argument przyjmowany przez funkcję to łańcuch znaków, który mamy zaszyfrować, a drugi – wartość przesunięcia. Pamiętajmy, że przesunięcie może być dowolną liczbą całkowitą.

Ponieważ klucz w wersji uogólnionej może być dowolną liczbą całkowitą, pierwszym krokiem będzie znormalizowanie go.

Ważne!

Możemy nie normalizować klucza, ale w takim wypadku musimy rozbudować program o dodatkowe instrukcje (obsługujące różne wartości klucza).

Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny. Linia 2. kratka include otwórz nawias ostrokątny string zamknij nawias ostrokątny. Linia 3. using namespace std średnik. Linia 5. string szyfruj otwórz nawias okrągły string tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 6. klucz znak równości otwórz nawias okrągły klucz procent 26 plus 26 zamknij nawias okrągły procent 26 średnik. Linia 8. zamknij nawias klamrowy.
Przykład 1

 klucz

przesunięcie

-1 

(-1 % 26 + 26) % 26 = (25 + 26) % 26 = 25

(0 % 26 + 26) % 26 = (0 + 26) % 26 = 0

(1 % 26 + 26) % 26 = (1 + 26) % 26 = 1

(2 % 26 + 26) % 26 = (2 + 26) % 26 = 2

Założyliśmy, że program nie będzie uwzględniał wielkości liter, zatem przed przystąpieniem do szyfrowania musimy zamienić ewentualne małe litery na wielkie.

Wykorzystamy pętlę for.  Przeiterujemy przez wszystkie znaki w szyfrowanym tekście, by sprawdzić, które z nich są małymi literami. W instrukcji warunkowej sprawdzimy, czy wartość kodu ASCII danego znaku z szyfrowanego łańcucha zawiera się w zakresie, do którego należą kody ASCII małych liter alfabetu łacińskiego (czyli od a do z).

Jeżeli instrukcja warunkowa zwróci wartość true (warunek jest spełniony, czyli znak jest małą literą), kod zmienia małą literę na dużą literę. W tabeli kodów ASCII duże litery są dokładnie 32 pozycje przed małymi literami, np. kod ASCII dla litery a to 97, a dla A to 65. Zatem odejmowanie 32 od kodu małej litery zamienia ją na dużą literę.

Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny. Linia 2. kratka include otwórz nawias ostrokątny string zamknij nawias ostrokątny. Linia 3. using namespace std średnik. Linia 5. string szyfruj otwórz nawias okrągły string tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 6. klucz znak równości otwórz nawias okrągły klucz procent 26 plus 26 zamknij nawias okrągły procent 26 średnik. Linia 8. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny znak równości apostrof a apostrof ampersant ampersant tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości apostrof z apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy minus 32 średnik. Linia 11. zamknij nawias klamrowy. Linia 12. zamknij nawias klamrowy. Linia 14. zamknij nawias klamrowy.
Ciekawostka

Alternatywą dla metody size() jest metoda length(). Można je stosować wymiennie.

Nasz program ma szyfrować wyłącznie litery, zatem inne znaki (spacje czy znaki interpunkcyjne oraz cyfry) nie powinny być szyfrowane. Zapiszemy zatem drugą pętlę for.

Ważne!

Uogólniony szyfr Cezara powinien działać niezależnie od wartości klucza. Musimy zatem brać pod uwagę trzy przypadki:

  • wartość zmiennej klucz jest większa niż 0;

  • wartość zmiennej klucz jest równa 0;

  • wartość zmiennej klucz jest mniejsza od 0.

Jak zostało powiedziane, nie musimy rozpisywać dodatkowych instrukcji, ponieważ doprowadziliśmy do normalizacji wartości klucza – zawsze znajduje się w zakresie <0, 25>.

Pętla będzie iterować po kolejnych znakach łańcucha znaków. Jeśli znak nie będzie wielką literą, czyli jego kod numeryczny nie będzie zawierał się w przedziale kodów numerycznych znaków <A; Z>, nie zostanie zaszyfrowany, pętla przerwie swoje działanie dla elementu i przejdzie do kolejnej iteracji.

Ważne!

Język C++ pozwala na bezpośrednie porównanie znaków, traktując je jako wartości ich kodów ASCII.

Linia 1. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny otwórz nawias okrągły int zamknij nawias okrągły tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny apostrof A apostrof kreska pionowa kreska pionowa tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny apostrof Z apostrof zamknij nawias okrągły. Linia 3. continue średnik. Linia 4. zamknij nawias klamrowy.

Jeśli natomiast szyfrowany znak jest literą, konieczne jest sprawdzenie wartości klucza, za pomocą którego zostanie zaszyfrowany.

W instrukcji warunkowej rozważamy dwa przypadki.

Pierwszy z nich to sytuacja, w której dodanie wartości klucza do znaku nie przekroczy wartości kodu ASCII litery Z, czyli nie wyjdziemy poza alfabet. W takiej sytuacji klucz jest dodawany do wartości kodu ASCII tego znaku.

Linia 1. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz otwórz nawias ostrokątny znak równości apostrof Z apostrof zamknij nawias okrągły. Linia 2. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus znak równości klucz średnik. Linia 3. zamknij nawias klamrowy.

Natomiast jeżeli dodanie wartości klucza do znaku przekroczy wartość kodu ASCII litery Z (wyjdziemy z alfabetu), to dodajemy wartość klucza, ale odejmujemy również liczbę 26 (liczbę liter w alfabecie) od wyniku.

Linia 1. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz otwórz nawias ostrokątny znak równości apostrof Z apostrof zamknij nawias okrągły. Linia 2. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus znak równości klucz średnik. Linia 3. else. Linia 4. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz minus 26 średnik. Linia 5. zamknij nawias klamrowy.

Po wyjściu z pętli zwracamy wartość zmiennej tekst.

Linia 1. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny otwórz nawias okrągły int zamknij nawias okrągły tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny apostrof A apostrof kreska pionowa kreska pionowa tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny apostrof Z apostrof zamknij nawias okrągły. Linia 3. continue średnik. Linia 4. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz otwórz nawias ostrokątny znak równości apostrof Z apostrof zamknij nawias okrągły. Linia 5. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus znak równości klucz średnik. Linia 6. else. Linia 7. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz minus 26 średnik. Linia 8. zamknij nawias klamrowy. Linia 10. return tekst średnik.

Kod programu

Na koniec umieszczamy wywołania funkcji szyfruj() w funkcji main().

Działanie programu przetestujemy dla łańcucha znaków Sklepy cynamonowe t. 2 oraz klucza o wartości 5.

Cały kod programu:

Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny. Linia 2. kratka include otwórz nawias ostrokątny string zamknij nawias ostrokątny. Linia 3. using namespace std średnik. Linia 5. string szyfruj otwórz nawias okrągły string tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 6. klucz znak równości otwórz nawias okrągły klucz procent 26 plus 26 zamknij nawias okrągły procent 26 średnik. Linia 8. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny znak równości apostrof a apostrof ampersant ampersant tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości apostrof z apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy minus 32 średnik. Linia 11. zamknij nawias klamrowy. Linia 12. zamknij nawias klamrowy. Linia 14. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny otwórz nawias okrągły int zamknij nawias okrągły tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 15. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny apostrof A apostrof kreska pionowa kreska pionowa tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny apostrof Z apostrof zamknij nawias okrągły. Linia 16. continue średnik. Linia 17. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz otwórz nawias ostrokątny znak równości apostrof Z apostrof zamknij nawias okrągły. Linia 18. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus znak równości klucz średnik. Linia 19. else. Linia 20. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz minus 26 średnik. Linia 21. zamknij nawias klamrowy. Linia 23. return tekst średnik. Linia 24. zamknij nawias klamrowy. Linia 26. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 27. string tekst znak równości cudzysłów Sklepy cynamonowe t kropka 2 cudzysłów średnik. Linia 28. int klucz znak równości 5 średnik. Linia 30. tekst znak równości szyfruj otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły średnik. Linia 32. cout otwórz nawias ostrokątny otwórz nawias ostrokątny tekst otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 34. return 0 średnik. Linia 35. zamknij nawias klamrowy.

Wynik działania programu: XPQJUD HDSFRTSTBJ Y. 2

Deszyfrowanie

Szyfr Cezara jest szyfrem symetrycznym – do szyfrowania i deszyfrowania używamy tego samego klucza, oraz podstawieniowym – polega na zastępowaniu znaku tekstu jawnegotekst jawnytekstu jawnego przesuniętym w zapętlonym alfabecie o długość klucza innym znakiem. Z tego wynika, że deszyfrowanie to operacja odwrotna do szyfrowania i polega na przesuwaniu znaku w zapętlonym alfabecie w odwrotnym kierunku niż podczas szyfrowania.

Funkcja deszyfrująca wygląda następująco:

Linia 1. string deszyfruj otwórz nawias okrągły string tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 2. klucz znak równości otwórz nawias okrągły otwórz nawias okrągły minus klucz procent 26 plus 26 zamknij nawias okrągły procent 26 zamknij nawias okrągły średnik. Linia 4. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 5. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny znak równości apostrof a apostrof ampersant ampersant tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości apostrof z apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 6. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy minus 32 średnik. Linia 7. zamknij nawias klamrowy. Linia 8. zamknij nawias klamrowy. Linia 10. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny otwórz nawias okrągły int zamknij nawias okrągły tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 11. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny apostrof A apostrof kreska pionowa kreska pionowa tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny apostrof Z apostrof zamknij nawias okrągły. Linia 12. continue średnik. Linia 13. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz otwórz nawias ostrokątny znak równości apostrof Z apostrof zamknij nawias okrągły. Linia 14. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus znak równości klucz średnik. Linia 15. else. Linia 16. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz minus 26 średnik. Linia 17. zamknij nawias klamrowy. Linia 19. return tekst średnik. Linia 20. zamknij nawias klamrowy.

Kompletny kod programu, który najpierw zaszyfruje łańcuch znaków, a następnie go odszyfruje:

Linia 1. kratka include otwórz nawias ostrokątny iostream zamknij nawias ostrokątny. Linia 2. kratka include otwórz nawias ostrokątny string zamknij nawias ostrokątny. Linia 3. using namespace std średnik. Linia 5. string szyfruj otwórz nawias okrągły string tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 6. klucz znak równości otwórz nawias okrągły klucz procent 26 plus 26 zamknij nawias okrągły procent 26 średnik. Linia 8. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 9. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny znak równości apostrof a apostrof ampersant ampersant tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości apostrof z apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 10. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy minus 32 średnik. Linia 11. zamknij nawias klamrowy. Linia 12. zamknij nawias klamrowy. Linia 14. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny otwórz nawias okrągły int zamknij nawias okrągły tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 15. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny apostrof A apostrof kreska pionowa kreska pionowa tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny apostrof Z apostrof zamknij nawias okrągły. Linia 16. continue średnik. Linia 17. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz otwórz nawias ostrokątny znak równości apostrof Z apostrof zamknij nawias okrągły. Linia 18. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus znak równości klucz średnik. Linia 19. else. Linia 20. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz minus 26 średnik. Linia 21. zamknij nawias klamrowy. Linia 23. return tekst średnik. Linia 24. zamknij nawias klamrowy. Linia 26. string deszyfruj otwórz nawias okrągły string tekst przecinek int klucz zamknij nawias okrągły otwórz nawias klamrowy. Linia 27. klucz znak równości otwórz nawias okrągły otwórz nawias okrągły minus klucz procent 26 plus 26 zamknij nawias okrągły procent 26 zamknij nawias okrągły średnik. Linia 29. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 30. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny znak równości apostrof a apostrof ampersant ampersant tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny znak równości apostrof z apostrof zamknij nawias okrągły otwórz nawias klamrowy. Linia 31. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy minus 32 średnik. Linia 32. zamknij nawias klamrowy. Linia 33. zamknij nawias klamrowy. Linia 35. for otwórz nawias okrągły int i znak równości 0 średnik i otwórz nawias ostrokątny otwórz nawias okrągły int zamknij nawias okrągły tekst kropka size otwórz nawias okrągły zamknij nawias okrągły średnik i plus plus zamknij nawias okrągły otwórz nawias klamrowy. Linia 36. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy otwórz nawias ostrokątny apostrof A apostrof kreska pionowa kreska pionowa tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy zamknij nawias ostrokątny apostrof Z apostrof zamknij nawias okrągły. Linia 37. continue średnik. Linia 38. if otwórz nawias okrągły tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz otwórz nawias ostrokątny znak równości apostrof Z apostrof zamknij nawias okrągły. Linia 39. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus znak równości klucz średnik. Linia 40. else. Linia 41. tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy znak równości tekst otwórz nawias kwadratowy i zamknij nawias kwadratowy plus klucz minus 26 średnik. Linia 42. zamknij nawias klamrowy. Linia 44. return tekst średnik. Linia 45. zamknij nawias klamrowy. Linia 47. int main otwórz nawias okrągły zamknij nawias okrągły otwórz nawias klamrowy. Linia 48. string tekst znak równości cudzysłów Sklepy cynamonowe t kropka 2 cudzysłów średnik. Linia 49. int klucz znak równości 5 średnik. Linia 51. tekst znak równości szyfruj otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły średnik. Linia 53. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Zaszyfrowany tekst dwukropek cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny tekst otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 55. tekst znak równości deszyfruj otwórz nawias okrągły tekst przecinek klucz zamknij nawias okrągły średnik. Linia 57. cout otwórz nawias ostrokątny otwórz nawias ostrokątny cudzysłów Odszyfrowany tekst dwukropek cudzysłów otwórz nawias ostrokątny otwórz nawias ostrokątny tekst otwórz nawias ostrokątny otwórz nawias ostrokątny endl średnik. Linia 59. return 0 średnik. Linia 60. zamknij nawias klamrowy.

Wynik działania programu:

Linia 1. Zaszyfrowany tekst dwukropek XPQJUD HDSFRTSTBJ Y kropka 2. Linia 2. Odszyfrowany tekst dwukropek SKLEPY CYNAMONOWE T kropka 2.

Słownik

ASCII
ASCII

sposób kodowania znaków, który różnym znakom, w tym małym i wielkim literom alfabetu języka łacińskiego, cyfrom, znakom przestankowym i białym, przyporządkowuje liczby całkowite z zakresu <0; 127>

normalizacja
normalizacja

proces, którego celem jest takie przekształcenie klucza, by należał do zakresu <0; 25>

szyfr Cezara
szyfr Cezara

rodzaj szyfru podstawieniowego, w którym każda litera tekstu jawnego (niezaszyfrowanego) zastępowana jest inną – oddaloną od niej o stałą liczbę pozycji w alfabecie – literą (szyfr monoalfabetyczny), przy czym kierunek zamiany musi być zachowany

szyfrogram
szyfrogram

(inaczej: kryptogram, tekst tajny) wiadomość, która została zaszyfrowana (lub jeszcze nie została odszyfrowana)

tekst jawny
tekst jawny

(inaczej: tekst otwarty) wiadomość, która nie została jeszcze zaszyfrowana (lub została odszyfrowana)