Problem 1

Specyfikacja problemu:

Napisz program, którego zadaniem będzie zaszyfrowanie i zdeszyfrowanie wiadomości „WIOSENNIE” dla klucza równego 3, przy użyciu szyfru Cezara.

R1TDPaoYEYaq7
Wybierz jedno nowe słowo poznane podczas dzisiejszej lekcji i ułóż z nim zdanie.

Napisz program, którego zadaniem będzie zaszyfrowanie i zdeszyfrowanie wiadomości „WIOSENNIE” dla klucza równego 3, przy użyciu szyfru Cezara.

Polecenie 1

Porównaj swoje rozwiązanie z animacją.

R1K4AZjNglIQr1
Nagranie filmowe dotyczące szyfru Cezara - implementacji algorytmu szyfrowania i deszyfrowania wiadomości zapisanej alfabetem łacińskim.

Na wstępie warto przypomnieć sposób działania szyfru Cezara.

Każda litera z tekstu jawnego jest zamieniana na inną, oddaloną o określoną liczbę pozycji w alfabecie. Ta liczba liter zwana jest kluczem szyfrującymklucz szyfrującykluczem szyfrującym. Juliusz Cezar używał klucza równego 3. Zobaczmy zatem, w jaki sposób można zaszyfrować wszystkie litery alfabetu łacińskiego.

Linia 1. klucz znak równości 3. Linia 2. alfabet łaciński znak równości ABCDEFGHIJKLMNOPQRSTUVWXYZ. Linia 3. alfabet zaszyfrowany znak równości DEFGHIJKLMNOPQRSTUVWXYZABC.

Z powyższego przykładu wynika, że litera A zamieniona została na literę D. Dzieje się tak, dlatego że litera D oddalona jest o 3 pozycje od litery A w alfabecie łacińskim.

Pseudokod

Pseudokod algorytmu szyfrującego przy użyciu szyfru Cezara wygląda następująco:

Linia 1. klucz znak równości 3. Linia 2. tekst podkreślnik jawny znak równości cudzysłów INFORMATYKA JEST SUPER cudzysłów. Linia 4. dla i znak równości 0 przecinek 1 przecinek kropka kropka kropka przecinek długość otwórz nawias okrągły tekst podkreślnik jawny zamknij nawias okrągły wykonuj. Linia 5. zamień tekst podkreślnik jawny otwórz nawias kwadratowy i zamknij nawias kwadratowy na oddaloną o klucz literę z alfabetu.

W powyższym pseudokodzie wykorzystaliśmy następującą notację: tekst_jawny[i]. Ozncza ona odwołanie się od i‑tego znaku w ciągu znaków. Pętla w linijce 4. wykonuje się, zaczynając od wartości 0, czyli założyliśmy, że indeks pierwszej litery z ciągu znaków wynosi 0 (jak w przypadku języka C++).

Komputerowa realizacja w C++

Zanim spróbujemy napisać własną implementacjęimplementacja algorytmuwłasną implementację algorytmu szyfru Cezara, należy przypomnieć o kilku istotnych zagadnieniach związanych z językiem C++.

  • Aby odwołać się do i‑tego znaku w łańcuchu znaków (string), należy użyć notacji: tekst_jawny[i], gdzie tekst_jawny to nazwa łańcucha znaków.

  • W celu uzyskania długości łańcucha znaków użyjemy funkcji length() w następujący sposób: tekst_jawny.length(), gdzie tekst_jawny to nazwa łańcucha znaków.

  • Wykonując dowolne działanie arytmetyczne na konkretnym znaku w łańcuchu znaków, należy pamiętać, że zostanie on zastąpiony kodem z tablicy ASCII. Przykładowo, w tablicy ASCII mała litera a ma wartość 97.

Jak to odszyfrować?

W celu zaszyfrowania liter należy wartość klucza szyfrującego dodawać do tekstu jawnego. Jeżeli chcemy odszyfrować tekst, wystarczy wartość klucza odejmować od tekstu zaszyfrowanego.

W prezentacji multimedialnej znajdziesz implementację algorytmu szyfrującego przy użyciu szyfru Cezara, napisaną w języku w C++.

Słownik

implementacja algorytmu
implementacja algorytmu

komputerowa realizacja algorytmu przy użyciu języka programowania; często mianem implementowania nazywamy również sam proces tworzenia programu

klucz szyfrujący
klucz szyfrujący

wartość liczbowa używana do określania liczby liter, o którą należy przesunąć litery z tekstu jawnego, aby uzyskać litery zaszyfrowane; np. jeśli klucz jest równy 3, to litera A zostanie zamieniona na literę D