Registriert seit: 26. Sep 2004
Ort: Biberach
319 Beiträge
Turbo Delphi für Win32
|
2 Prozeduren zu langsam
21. Nov 2005, 18:56
Hallo!
Ich habe jetzt zwei Prozeduren geschrieben, die mir aber noch zu langsam sind. Ich bekomme Sie nicht schneller hin.
Kennt jemand ne Möglichkeit, dass diese Prozeduren schneller werden?
Prozedur 1:
Delphi-Quellcode:
function TVerschluesselung.Verschluesseln(passwort:String;Text:String):String;
var passwortverschluesselt,schluessel,block1,block2,text2,zeichen,zeichen2: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);
text2:=text;
index:=-1; //BlockIndex
//verschlüsseln
repeat
index:=index+1;
//Block ausschneiden
if index<>0 then delete(text2,1,32);
block1:=text2;
delete(block1,33,length(block1));
//Block verschlüsseln
for i:=1 to length(Block1) do begin
Zeichen:=Block1[i];
Zeichen2:=Schluessel[i];
i2:=ord(Zeichen2[1]);
i4:=ord(Zeichen[1]);
i3:=i4+i2;
// if i3>255 then i3:=i3-255;
Block2:=Block2+char(i3);
end;
//Neuer Schlüssel
schluessel:=MD5Print(MD5String(Block1+schluessel+Block1));
until index>=i5/32;
result:=String(Block2);
end;
Prozedur 2:
Delphi-Quellcode:
function TVerschluesselung.Entschluesseln(passwort:String;Text:String):String;
var passwortverschluesselt,schluessel,block1,block2,block3,text2,zeichen,zeichen2: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);
text2:=text;
index:=-1; //BlockIndex
//entschlüsseln
repeat
index:=index+1;
//Block ausschneiden
if index<>0 then delete(text2,1,32);
block1:=text2;
delete(block1,33,length(block1));
//Block entschlüsseln
for i:=1 to length(Block1) do begin
Zeichen:=Block1[i];
Zeichen2:=Schluessel[i];
i2:=ord(Zeichen2[1]);
i4:=ord(Zeichen[1]);
i3:=i4-i2;
// if i3<0 then i3:=i3+255;
Block2:=Block2+char(i3);
end;
//Neuer Schlüssel
Block3:=Block2;
delete(Block3,1,index*32);
delete(Block3,33,length(Block3));
schluessel:=MD5Print(MD5String(Block3+schluessel+Block3));
until index>=i5/32;
result:=String(Block2);
end;
|
|
Zitat
|