program Vigenere_Code;
uses wincrt;
const spalte = 26;
zeile
= 26;
type talphabet = array[1..spalte,1..zeile] of char;
var alpha
: talphabet;
anzahl, rest, i, j : byte;
ktext, schluessel, s : string;
procedure Feld_belegen;
var sp, z : byte;
begin
i:=0;
for z:=1 to zeile do
begin
for sp:=1 to spalte-i do
alpha[sp,z]:=chr(sp+64+i);
j:=0;
for sp:=spalte-i+1 to spalte
do
begin
inc(j);
alpha[sp,z]:=chr(64+j)
end;
inc(i);
end;
end;
procedure Feld_ausgeben;
begin
for i:=1 to zeile do
begin
for j:=1 to spalte do
write(alpha[j,i],'
');
writeln;
end;
end;
procedure Schluessel_auftragen;
begin
s:='';
for i:=1 to length(schluessel) do
s:=s+upcase(schluessel[i]);
schluessel:=s;
s:='';
anzahl:=length(ktext)div length(schluessel);
rest:=length(ktext)mod length(schluessel);
for i:=1 to anzahl do
s:=s+schluessel;
for i:=1 to rest do
s:=s+upcase(schluessel[i]);
end;
procedure Verschluesseln(var text:string);
var zei, stelle : byte;
buch
: char;
hilfs
: string;
begin
writeln('Verschlüsselung');
hilfs:='';
for i:=1 to length(text) do
begin
buch:=upcase(text[i]);
zei:=ord(s[i])-64;
for j:=1 to 26 do
if alpha[j,1]=buch
then
stelle:=j;
writeln(buch,' ->
',alpha[stelle,zei]);
hilfs:=hilfs+alpha[stelle,zei];
end;
text:=hilfs;
readkey;
end;
procedure Entschluesseln(var text:string);
var zei, stelle : byte;
buch
: char;
hilfs
: string;
begin
writeln('Entschlüsselung');
hilfs:='';
for i:=1 to length(text) do
begin
buch:=upcase(text[i]);
zei:=ord(s[i])-64;
for j:=1 to 26 do
if alpha[j,zei]=buch
then
stelle:=j;
writeln(buch,' ->
',alpha[stelle,1]);
hilfs:=hilfs+alpha[stelle,1];
end;
text:=hilfs;
readkey;
end;
begin
writeln('Vigenére - Code');
Feld_belegen;
writeln;
Feld_ausgeben;
readkey;
writeln;
writeln('Welcher Text soll verschlüsselt werden? ');
readln(ktext);
writeln;
writeln('Welcher Schlüssel soll verwendet werden? ');
readln(schluessel);
Schluessel_auftragen;
writeln;
writeln(s);
writeln(ktext);
writeln;
Verschluesseln(ktext);
writeln;
writeln('Geheimtext: ',ktext);
writeln;
Entschluesseln(ktext);
writeln;
writeln('Klartext: ',ktext);
end.