program erweiterter_Caesar_Code;
uses wincrt;
type talphabet = array[1..26,1..2] of char;
var alpha
: talphabet;
anzahl, i, j,z : byte;
ktext
: string;
taste
: char;
procedure Feld_belegen(v:byte);
var spalte, zeile : byte;
begin
for spalte:=1 to 26 do
alpha[spalte,1]:=chr(spalte+64);
for spalte:=1 to 26-v do
alpha[spalte,2]:=chr(spalte+64+v);
i:=0;
for spalte:=26-v+1 to 26 do
begin
inc(i);
alpha[spalte,2]:=chr(i+64)
end;
end;
procedure Feld_ausgeben;
begin
for i:=1 to 2 do
begin
for j:=1 to 26 do
write(alpha[j,i],'
');
writeln;
end;
end;
procedure Verschluesseln(var text:string);
var stelle : byte;
buch : char;
hilfs : string;
begin
writeln('Verschlüsselung');
hilfs:='';
for i:=1 to length(text) do
begin
buch:=upcase(text[i]);
for j:=1 to 26 do
if alpha[j,1]=buch
then
stelle:=j;
writeln(buch,' ->
',alpha[stelle,2]);
readkey;
hilfs:=hilfs+alpha[stelle,2];
end;
text:=hilfs;
end;
procedure Entschluesseln(text:string);
var stelle : byte;
buch : char;
hilfs
: string;
begin
writeln('Entschlüsselung');
hilfs:='';
for i:=1 to length(text) do
begin
buch:=upcase(text[i]);
for j:=1 to 26 do
if alpha[j,2]=buch
then
stelle:=j;
writeln(buch,' ->
',alpha[stelle,1]);
readkey;
hilfs:=hilfs+alpha[stelle,1];
end;
text:=hilfs;
writeln(text)
end;
BEGIN
writeln('Cäsar - Code');
write('Um wieviele Stellen soll das Alphabet verschoben werden?
');
readln(anzahl);
Feld_belegen(anzahl);
writeln;
Feld_ausgeben;
readkey;
writeln;
writeln('Welcher Text soll verschlüsselt werden? ');
readln(ktext);
writeln;
Verschluesseln(ktext);
writeln;
writeln('Geheimtext: ',ktext);
writeln;
clrscr;
writeln('Sind Sie ein <H>acker oder kennen Sie den <S>chlüssel?');
taste:=readkey;
if upcase(taste)='S' then
begin
Entschluesseln(ktext);
writeln;
writeln('Klartext: ',ktext);
writeln;
end
else
begin
writeln('Hacker');
z:=0;
repeat
inc(z);
Feld_belegen(z);
Feld_ausgeben;
Entschluesseln(ktext);
writeln;
writeln('War
das angeblich der richtige Klartext? ');
taste:=readkey;
until upcase(taste)='J';
end;
END.