Einzelnen Beitrag anzeigen

jawo3

Registriert seit: 15. Sep 2009
Ort: Niedersachsen
41 Beiträge
 
#9

Re: Einfacher Verschlüsselungs-Algorythmus // Fehler

  Alt 16. Sep 2009, 14:02
Vielen Dank für eure Hilfe, ich hab's jetzt hinbekommen und es funktioniert, wie ich es wollte.

Hier der fertige Quelltext:
Delphi-Quellcode:
(*
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.
Grüße
Jan
Jan
  Mit Zitat antworten Zitat