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

Ver- und Entschlüsselung nach Vigenère

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.


zu UE-Block III
zurück zu Beispiele