function MyStrtoHex(s: string): string;
var
TmpStr: string;
I: Integer;
begin
TmpStr := '';
for I:=1 to Length(s) do
TmpStr := TmpStr + IntToHex(Ord(s[i]),2);
Result := TmpStr;
end;function MyHextoStr(s: string): string;
var
HexS,TmpStr: string;
I: Integer;
a: byte;
begin
HexS := s;
if Length(HexS) mod 2=1 then HexS:=HexS+'0';
tmpstr:='';
for i:=1 to (length(hexS) div 2) do begin
a:=strtoint('$'+hexS[2*i-1]+hexS[2*i]);
tmpstr := tmpstr+chr(a);
end;
Result :=tmpstr;
end;function encrypt(const s:string; skey:string):string;
var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=myStrtoHex(s);
hexskey:=myStrtoHex(skey);
midS :=hexS;
for i:=1 to (length(hexskey) div 2) do begin
if i<>1 then midS:= tmpstr;
tmpstr:='';
for j:=1 to (length(midS) div 2) do
begin
a:=strtoint('$'+midS[2*j-1]+midS[2*j]);
b:=strtoint('$'+hexskey[2*i-1]+hexskey[2*i]);
c:=a xor b;
tmpstr := tmpstr+myStrtoHex(chr(c));
end;
end;
result := tmpstr;
end;function decrypt(const s:string; skey:string):string;
var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=s;
if length(hexS) mod 2=1 then
begin
exit;
end;
hexskey:=myStrtoHex(skey);
tmpstr :=hexS;
midS :=hexS;
for i:=(length(hexskey) div 2) downto 1 do
begin
if i<>(length(hexskey) div 2) then midS:= tmpstr;
tmpstr:='';
for j:=1 to (length(midS) div 2) do
begin
a:=strtoint('$'+midS[2*j-1]+midS[2*j]);
b:=strtoint('$'+hexskey[2*i-1]+hexskey[2*i]);
c:=a xor b;
tmpstr := tmpstr+myStrtoHex(chr(c));
end;
end;
result := myHextoStr(tmpstr);
end;STRING换成ANSISTRING CHAR换成ANSICHAR 依然不行,哪位帮忙转换下
var
TmpStr: string;
I: Integer;
begin
TmpStr := '';
for I:=1 to Length(s) do
TmpStr := TmpStr + IntToHex(Ord(s[i]),2);
Result := TmpStr;
end;function MyHextoStr(s: string): string;
var
HexS,TmpStr: string;
I: Integer;
a: byte;
begin
HexS := s;
if Length(HexS) mod 2=1 then HexS:=HexS+'0';
tmpstr:='';
for i:=1 to (length(hexS) div 2) do begin
a:=strtoint('$'+hexS[2*i-1]+hexS[2*i]);
tmpstr := tmpstr+chr(a);
end;
Result :=tmpstr;
end;function encrypt(const s:string; skey:string):string;
var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=myStrtoHex(s);
hexskey:=myStrtoHex(skey);
midS :=hexS;
for i:=1 to (length(hexskey) div 2) do begin
if i<>1 then midS:= tmpstr;
tmpstr:='';
for j:=1 to (length(midS) div 2) do
begin
a:=strtoint('$'+midS[2*j-1]+midS[2*j]);
b:=strtoint('$'+hexskey[2*i-1]+hexskey[2*i]);
c:=a xor b;
tmpstr := tmpstr+myStrtoHex(chr(c));
end;
end;
result := tmpstr;
end;function decrypt(const s:string; skey:string):string;
var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=s;
if length(hexS) mod 2=1 then
begin
exit;
end;
hexskey:=myStrtoHex(skey);
tmpstr :=hexS;
midS :=hexS;
for i:=(length(hexskey) div 2) downto 1 do
begin
if i<>(length(hexskey) div 2) then midS:= tmpstr;
tmpstr:='';
for j:=1 to (length(midS) div 2) do
begin
a:=strtoint('$'+midS[2*j-1]+midS[2*j]);
b:=strtoint('$'+hexskey[2*i-1]+hexskey[2*i]);
c:=a xor b;
tmpstr := tmpstr+myStrtoHex(chr(c));
end;
end;
result := myHextoStr(tmpstr);
end;STRING换成ANSISTRING CHAR换成ANSICHAR 依然不行,哪位帮忙转换下
var
TmpStr: RawByteString;
I: Integer;
begin
TmpStr := '';
for I:=1 to Length(s) do
TmpStr := TmpStr + IntToHex(Ord(s[i]),2);
Result := TmpStr;
end;function MyHextoStr(s: RawByteString): RawByteString;
var
HexS,TmpStr: RawByteString;
I: Integer;
a: byte;
begin
HexS := s;
if Length(HexS) mod 2=1 then HexS:= HexS+'0';
tmpstr:='';
for i:=1 to (length(hexS) div 2) do begin
a:=strtoint('$'+hexS[2*i-1]+hexS[2*i]);
tmpstr := tmpstr+ansichar(a);
end;
Result :=tmpstr;
end;function encrypt(const s:RawByteString; skey:RawByteString):RawByteString;
var
i,j: integer;
hexS,hexskey,midS,tmpstr:RawByteString;
a,b,c:byte;
begin
hexS :=myStrtoHex(s);
hexskey:=myStrtoHex(skey);
midS :=hexS;
for i:=1 to (length(hexskey) div 2) do begin
if i<>1 then midS:= tmpstr;
tmpstr:='';
for j:=1 to (length(midS) div 2) do
begin
a:=strtoint('$'+midS[2*j-1]+midS[2*j]);
b:=strtoint('$'+hexskey[2*i-1]+hexskey[2*i]);
c:=a xor b;
tmpstr := tmpstr+myStrtoHex(AnsiChar(c));
end;
end;
result := tmpstr;
end;function decrypt(const s:RawByteString; skey:RawByteString):RawByteString;
var
i,j: integer;
hexS,hexskey,midS,tmpstr:RawByteString;
a,b,c:byte;
begin
hexS :=s;
if length(hexS) mod 2=1 then
begin
exit;
end;
hexskey:=myStrtoHex(skey);
tmpstr :=hexS;
midS :=hexS;
for i:=(length(hexskey) div 2) downto 1 do
begin
if i<>(length(hexskey) div 2) then midS:= tmpstr;
tmpstr:='';
for j:=1 to (length(midS) div 2) do
begin
a:=strtoint('$'+midS[2*j-1]+midS[2*j]);
b:=strtoint('$'+hexskey[2*i-1]+hexskey[2*i]);
c:=a xor b;
tmpstr := tmpstr+myStrtoHex(AnsiChar(c));
end;
end;
result := myHextoStr(tmpstr);
end;