Ok, dann lautet der vereinfachte Code folgendermaßen:
Delphi-Quellcode:
unit Crypt;
interface
uses SysUtils;
function Encrypt (
const s:
String; Key: Word) :
string;
function Decrypt (
const s:
string; Key: Word) :
string;
implementation
const CKEY1 = 53761;
CKEY2 = 32618;
function Encrypt(
const S :
String; Key: Word):
String;
var i :Integer;
RStr :RawByteString;
RStrB :TBytes
Absolute RStr;
begin
Result:= '
';
RStr:= UTF8Encode(S);
for i := 0
to Length(RStr)-1
do begin
RStrB[i] := RStrB[i]
xor (Key
shr 8);
Key := (RStrB[i] + Key) * CKEY1 + CKEY2;
end;
for i := 0
to Length(RStr)-1
do begin
Result:= Result + IntToHex(RStrB[i], 2);
end;
end;
function Decrypt(
const S:
String; Key: Word):
String;
var i, tmpKey :Integer;
RStr :RawByteString;
RStrB :TBytes
Absolute RStr;
tmpStr :
String;
begin
tmpStr:= UpperCase(S);
SetLength(RStr, Length(tmpStr)
div 2);
i:=low(tmpStr);
try
while (i<=high(tmpStr))
do
begin
RStrB[i
div 2]:= StrToInt('
$' + tmpStr[i] + tmpStr[i+1]);
Inc(i, 2);
end;
except
Result:= '
';
Exit;
end;
for i := 0
to Length(RStr)-1
do
begin
tmpKey:= RStrB[i];
RStrB[i] := RStrB[i]
xor (Key
shr 8);
Key := (tmpKey + Key) * CKEY1 + CKEY2;
end;
Result:=UTF8ToString(RStr);
end;
end.