(*
ZUWEISUNG DER EINGABE ELEMENTE ZU DEN AUSGABE ELEMENTEN / VERSCHLÜSSELUNGSALGORYTHMUS:
->Die Ihalte von EditEingabe und EditAusgabe werden in der Theorie als zwei Zweidimensionale-Arrays
angesehen. EditAusgabe entsteht aus EditEingabe durch Spiegelung des Arrays über die Diagonale.
Somit hat jede Ausgangsstelle einen eindeutigen Partner, was das Rückgängigmachen der Verschlüsselung
ermöglicht.
EditEingabe EditAusgabe
1 2 3 4 5 > 25 20 15 10 5
6 7 8 9 10 > 24 19 14 9 4
11 12 13 14 15 ----------> 23 18 13 8 3
16 17 18 19 20 > 22 17 12 7 2
21 22 23 24 25 > 21 16 11 6 1
*)
unit Chaos;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
EditEingabe: TEdit;
EditAusgabe: TEdit;
Label1: TLabel;
Label2: TLabel;
ButtonStart: TButton;
ButtonEnd: TButton;
Label3: TLabel;
EditVerwZeichen: TEdit;
procedure ButtonEndClick(Sender: TObject);
procedure ButtonStartClick(Sender: TObject);
procedure EditEingabeChange(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var Form1: TForm1;
const ArrayAusgabe:
array [1..25]
of integer = (25,20,15,10,5,24,19,14,9,4,23,18,13,8,3,22,17,12,7,2,21,16,11,6,1);
//ArrayAusgabe speichert die definierte Zuordnung der neuen Charakterpositionen gemäß des gewählten Verschlüsselungsstandards
implementation
{$R *.dfm}
procedure TForm1.EditEingabeChange(Sender: TObject);
begin
EditVerwZeichen.Text:=IntToStr(Length(Form1.EditEingabe.Text));
//Anzeige der verwendeten Zeichen
end;
procedure TForm1.ButtonStartClick(Sender: TObject);
//Button zum Starten der Verschlüsselung
var h,i: integer;
// für for-Schleifen
StringEingabe:
string;
// Zum speichern des Eingabe Satzes.
StringAusgabe:
string;
// Zum speichern des Ausgabe Satzes.
leer: char;
begin
if length(EditEingabe.Text)=0
then showmessage('
Bitte Text eingeben');
//Keine Zeichen eingegeben?
if length(EditEingabe.Text)>25
then showmessage('
Bitte maximal 25 Zeichen eingeben');
// Zu viele Zeichen eingegeben?
StringEingabe := EditEingabe.Text;
//Inhalt aus Eingabe Textfeld wird als String gespeichert
leer:='
';
if length(EditEingabe.Text)<25
then
begin
for h:=1
to 25-length(EditEingabe.Text)
do
begin
StringEingabe:=StringEingabe + leer;
end;
//Eingabe mit Leerzeichen auffüllen, falls Anzahl Zeichen < 25
end;
setlength(StringAusgabe,25);
//Maximale Länge des Ausgabestrings wird auf 25 festgesetzt
for i:=1
to 25
do //einzelne Zeichen des Strings werden nacheinander mit neuen Positionen als neuer String gespeichert
begin
StringAusgabe[ArrayAusgabe[i]]:=StringEingabe[i];
//Zuweisung
end;
EditAusgabe.Text:=StringAusgabe;
//Anzeige im Ausgabe Textfeld
end;
procedure TForm1.ButtonEndClick(Sender: TObject);
// Button zum Beenden des Programms
begin
close;
end;
end.