Hi,
ich habe das Problem, dass ich es nicht schaffe ein Miniprogramm zu schreiben, dass ein kurzes Wort (welches in einer Editbox steht) mithilfe des RC4 Algorithmus in einen Code umzuwandeln.
Ich habe den Algorithmus schon im Forum gefunden, schaffe es aber nicht ihn einzubinden.
Ich hoffe ihr könnt mir hier helfen.
Bisher habe ich das aus dem Forum zusammengestellt.
Einige Sachen habe ich kommentiert und bei anderen habe ich drangeschrieben, was ich nicht verstehe.
Delphi-Quellcode:
type
TRC4Context = record
D: array[Byte] of Byte;
I,J: Byte;
end;
implementation
{$R *.dfm}
procedure RC4Init(var RC4: TRC4Context; const Key: String); // Erstellen der S-Box
var
R,S,T,K: Byte;
U,L: Integer;
begin
L := Length(Key);
with RC4 do
begin
I := 0; // die Zähler i und j werden am Anfang auf 0 gesetzt
J := 0;
for S := 0 to 255 do D[S] := S; // die S-Box wird linear aufgefüllt
R := 0;
U := 0;
for S := 0 to 255 do
begin
if U < L then K := PByteArray(Key)[U] else K := 0; //Was bedeutet "PByteArray(Key)[U]"??
Inc(U);
if U >= L then U := 0;
Inc(R, D[S] + K);
T := D[S];
D[S] := D[R];
D[R] := T;
end;
end;
end;
procedure RC4Code(var RC4: TRC4Context; const Source; var Dest; Count: Integer);
var
S: Integer;
T: Byte;
begin
with RC4 do
for S := 0 to Count -1 do
begin
Inc(I);
T := D[I];
Inc(J, T);
D[I] := D[J];
D[J] := T;
Inc(T, D[I]);
TByteArray(Dest)[S] := TByteArray(Source)[S] xor D[T]; // Was bedeutet das?? Kann man das verständlich umschreiben? Denn ich kenne den Befehl nicht.
end;
end;
procedure RC4Done(var RC4: TRC4Context);
begin
FillChar(RC4, SizeOf(RC4), 0);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
x: TRC4Context; str1, str2, str3: string;
begin
str1:=edit1.text; //hier soll die Verschlüsselung stattfinden
//str1 soll hinein gegeben werden und in edit2 soll dann der codierte Schlüssel stehen.
{RC4Init(x,'Passwort'); //Wie binde ich das ein?
RC4Code(x, str1[1], str2[1], Length(str1)); // verschlüsseln
RC4Done(x); }
end;
end.
Vielen Dank im Voraus