function HexCharToByte(Hex : char):Byte;
begin
Result:=0;
if Hex in [#48..#57] then { chars 0....9 }
Result:=Ord(Hex)-48
else if Hex in [#65..#70] then { chars A....F }
Result:=Ord(Hex)-65 + 10;
end;
//字符串加密/还原(dir=0/1)
function EncryptP(const S: String;dir:byte): String;
const
mm=7;
key:array[0..mm] of byte=($A2,$F9,$AA,$55,$E3,$6D,$8A,$47);//这里的常量是加密异或码(作为加密密钥用的),可自行修改为你需要的值就可以实现不同的加密密钥了。或者你可以改改这个函数,自己传一个固定长度(或变长)的密钥进来。
var
i, L : DWord;
b, k : byte;
begin
Result := '';
L:=Length(S);
if L<1 then exit;
k:=0;
if dir=0 then begin
//加密
for i := 1 to L do begin
b := byte(S) xor key[k];
Result := Result + IntToHex(b,2);
inc(k);
if k>7 then k:=0;
end
end else if dir=1 then begin
//还原
i:=1;
while i<L do begin
b:=HexCharToByte(S)*16+HexCharToByte(S[i+1]);
Result := Result + chr(b xor key[k]);
inc(i,2);
inc(k);
if k>7 then k:=0;
end;
end;
end;