Benutzer: gast • Besitzer: didaktik • Zuletzt geändert am: 2010/11/04 00:42:28

Ver- und Entschlüsselung mit erweitertem Cäsar-Code

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.


zu UE-Block II
zurück zu Beispiele