Spitze!
Benötigt nur noch 2/25 der Zeit!
Das einzige was an der Prozedure noch nicht passt ist, wenn der Text eine Länge hat, die nicht genau durch 32 Teilbar ist, also mit Rest, werden die Restlichen ZEichen nicht verschlüsselt. Aber das dürfte kein PRoblem sein, dass kann ich ja hinten Anhängen. Kannst du noch die zweite Prozedure anpassen?
Danke!
Die Angepasste Verschlüsselungs Prozedur sieht jetzt so aus:
Delphi-Quellcode:
function TVerschluesselung.Verschluesseln(passwort: string; Text: string): string;
var
passwortverschluesselt, schluessel, block1, block2: string;
text2: string;
index, i, i2, i3, i4, i5: Integer;
begin
//ersten Schlüssel erzeugen
passwortverschluesselt := MD5Print(MD5String(Passwort));
passwortverschluesselt := MD5Print(MD5String(passwort + passwortverschluesselt
+ passwort));
schluessel := passwortverschluesselt;
//erster Schlüssel erzeugt
block1 := '';
block2 := '';
i5 := length(Text) div 32;
text2 := text;
index := 0; //BlockIndex
//verschlüsseln
repeat
block1 := copy(text2, index * 32 + 1, 32);
//Block verschlüsseln
for i := 1 to length(Block1) do
begin
i2 := ord(Schluessel[i]);
i4 := ord(Block1[i]);
i3 := i4 + i2;
Block2 := Block2 + char(i3);
end;
index := index + 1;
//Neuer Schlüssel
schluessel := MD5Print(MD5String(Block1 + schluessel + Block1));
until index >= i5;
if length(Text)/32 > i5 then begin
block1 := copy(text2, index * 32 + 1, 32);
for i := 1 to length(Block1) do
begin
i2 := ord(Schluessel[i]);
i4 := ord(Block1[i]);
i3 := i4 + i2;
Block2 := Block2 + char(i3);
end;
end;
result := Block2;
end;