Zastępuje każdą literę tekstu jawnego inną, przesuniętą względem litery kodowanej o stałą liczbę pozycji w alfabecie.
Algorytm deszyfrowania tekstu zaszyfrowanego kodem Cezara
Wejście
Łańcuch tekstowy s zaszyfrowany kodem Cezara
Wyjście:
Tekst jawny
Elementy pomocnicze:
i – indeks, i N
kod(x) – zwraca kod litery x
znak(x) – zamienia kod x na odpowiadający mu znak ASCII
Lista kroków:
K01: Dla i = 0,1,...,|s| - 1 wykonuj K02...K03 ; przetwarzamy kolejne znaki tekstu
K02: Jeśli s[i] < "A" ∨ s[i] > "Z", to następny obieg pętli K01 ; pomijamy znaki nie będące literami A...Z
K03: s[i] ← znak(65 + (kod(s[i] - 42) mod 26) ; deszyfrujemy
K04: Pisz s
K05: Zakończ
Schemat blokowy
C++
#include <iostream>
#include <string>
using namespace std;
int main()
{
string z;
int i;
// odczytujemy wiersz znaków
cout<<"Podaj tekst do zaszyfrowania ";
getline(cin,z);
// zamieniamy małe litery na duże
// i kodujemy szyfrem cezara
for(i = 0; i < z.length(); i++)
{
z[i] = toupper(z[i]);
if((z[i] >= 'A') && (z[i] <= 'Z')) z[i] = char(65 + (z[i] - 62) % 26);
}
// wypisujemy zaszyfrowany tekst
cout << z << endl << endl;
return 0;
}
Program w Excel
Projektujemy tabelę
1) Numerujemy kolejne litery alfabetu łacińskiego od 0 do 25 (zakres od c4:AB4)
2) Do komórki C4 wprowadzamy funkcję: =ZNAK(C5+65)
3) W 6 wierszu w komórce c6 wprowadzamy klucz będący numerem przesunięcia
4) W komórce C6 wprowadzono formułę, która obliczy nową wartość znaku
W komórki F16-Q16 należy wpisywać litery do zaszyfrowania
W następnym wierszu używamy funkcji: =KOD(komórka wiersz wyżej)-97
W wierszu 20 używamy funkcji: =ZNAK(F19+65) – za F19 wstawiamy komórkę wiersz wyżej, tak samo jak w kroku 2
Po kolei algorytm w Excelu
- wycięcie literki z ciągu -funkcja
- zamieniasz litery na cyfrę -funkcja
- dodanie warunku. Chodzi o to, że np. litera 'z' ma numer 122, jeśli dodasz 3 (tak jak normalnie w cyfrze cezara) to dostałbyś znaczek '}' taki. więc musisz napisać, że jeśli ten kod litery > 122, to wracasz do początku etc.
- nowy kod – zamiana na literę
- wpisanie w komórkę wyjściową
- powtarzanie powyższego tyle razy, jaka jest długość słowa.
Opracował:Adam D.