代码:
XorKey:array[0..7] of Byte=($B2,$09,$AA,$55,$93,$6D,$84,$47); //字符串加密用
EncXorKey:array[0..7] of Byte;
function MobileDec(Str: string; mpasskey:string): string;//字符解密函數
var
i,j, strlen:Integer;
mstr, mpassStr:TStringBuilder;
begin
//result := trim(Str);
//exit;
if mpasskey <>'' then
begin
mpassStr:=TStringBuilder.Create;
mpassStr.Append(mpasskey);
for i := 0 to 7 do //XorKey
EncXorKey[i]:=XorKey[i];
strlen := mpassStr.Length;
if strlen >8 then strlen := 8;
for i:=1 to strlen do
begin
EncXorKey[i-1] := Byte(mpassStr[i-1]);
end;
end;
mstr:=TStringBuilder.Create;
mstr.Append(Str);
Result := '';
j := 0;
for i := 1 to mstr.Length div 4 do
begin
if mpasskey <>'' then
Result := Result + Char(StrToInt('$' + Copy(mstr.ToString, i * 4 - 3, 4)) xor EncXorKey[j])//
else
Result := Result + Char(StrToInt('$' + Copy(mstr.ToString, i * 4 - 3, 4)) xor XorKey[j]);//
j := (j + 1) mod 8;
end;
end;
function MobileEnc(Str: string; mpasskey:string): string; //字符加密函數 這是用的一個異或加密
var
i,j, strlen:Integer;
mstr, mpassStr:TStringBuilder;
begin
//result := Str;
//exit;
if mpasskey <>'' then
begin
mpassStr:=TStringBuilder.Create;
mpassStr.Append(mpasskey);
for i := 0 to 7 do //XorKey
EncXorKey[i]:=XorKey[i];
strlen := mpassStr.Length;
if strlen >8 then strlen := 8;
for i:=1 to strlen do
begin
EncXorKey[i-1] := Byte(mpassStr[i-1]);
end;
end;
Result := '';
j := 0;
mstr:=TStringBuilder.Create;
mstr.Append(Str);
for i := 1 to mstr.Length do
begin
if mpasskey <>'' then
Result:=Result+IntToHex(ord(mstr[i-1]) xor EncXorKey[j],4)//
else
Result := Result + IntToHex(ord(mstr[i-1]) xor XorKey[j], 4);//
j := (j + 1) mod 8;
end;
end;