Here is a simple funcitions that can solve your problem...
procedure TMain.Button1Click(Sender: TObject);
var i : integer;
sRet : String;
sPom : String;
sPassWord : String;
begin
sPassWord:=ParamStr(4);
sRet :='';
sPom :='';
For i:=1 to (Length(sPassWord) div 2) do
begin
sPom := Chr(StrToInt('$' + MidStr(sPassWord,2 * i - 1, 2)));
sRet:= sRet + sPom;
end;
Edit1.text := DecryptStr(sRet, 'asdfghjkl')
end;
Function TMain.Add128(strul : String) : String;
var
strIz :String;
i : Integer;
sPom : String;
sPomi : Integer;
begin
strIz :='';
For i:=1 to Length(strul) do
begin
sPom := MidStr(strul,i,1);
sPomi := Ord(sPom[1]);
strIz := strIz + Chr((sPomi + 128) mod 256);
end;
Add128 := strIz
end;
Function TMain.CreateEncryptCode(Key : String) : Integer;
var
Total1,Total2 : Integer;
NbChars1, NbChars2 : Integer;
Counter : Integer;
sPom : String;
sPomR : Real;
begin
Total1 := 0;
Total2 := 0;
NbChars1 := 0;
NbChars2 := 0;
For Counter := 1 to Length (Key) do
case (Counter mod 2) of
0 : begin
sPom := MidStr(Key, Counter, 1);
Total1 := Total1 + Ord(sPom[1]);
NbChars1 := NbChars1 + 1
end
else
begin
sPom := MidStr(Key, Counter, 1);
Total2 := Total2 + Ord(sPom[1]);
NbChars2 := NbChars2 + 1
end
end;
If (NbChars1>0) AND (NbChars2>0) Then
begin
sPomR := Abs((Total1 / NbChars1)-(Total2 / NbChars2));
CreateEncryptCode := Round(sPomR);
end
else
CreateEncryptCode := 1
end;
Function TMain.DecryptStr(EncStr : String; Key : String) : String;
var
Counter : Integer;
EncCode : Integer;
sPom : String;
Result1 : string;
begin
EncCode := CreateEncryptCode(Key);
DecryptStr := '';
Result :='';
EncStr := Add128(EncStr);
For Counter := 1 To Length (EncStr) do
case (Counter mod 2) of
0 : begin
sPom := MidStr(EncStr, Counter, 1);
Result1 := Result1 + Chr(Ord(sPom[1]) - EncCode);
end
else
begin
sPom := MidStr(EncStr, Counter, 1);
Result1 := Result1 + Chr(Ord(sPom[1]) + EncCode);
end
end;
DecryptStr := Result1
end;
Function TMain.EncryptStr(OrigStr : String; Key : String) : String;
var
Counter : Integer;
EncCode : Integer;
sPom : String;
Result1 : string;
begin
EncCode := CreateEncryptCode(Key);
EncryptStr := '';
Result :='';
For Counter := 1 To Length (OrigStr) do
case (Counter mod 2) of
0 : begin
sPom := MidStr(OrigStr, Counter, 1);
Result1 := Result1 + Chr(Ord(sPom[1]) + EncCode);
end
else
begin
sPom := MidStr(OrigStr, Counter, 1);
Result1 := Result1 + Chr(Ord(sPom[1]) - EncCode);
end
end;
EncryptStr := Add128(Result1);
end;