library StrEntry;
uses
SysUtils,
Classes;
{$R *.res} function myStrtoHex(s: string): pchar;var tmpstr:string;
i:integer;
begin
tmpstr := '';
for i:=1 to length(s) do
begin
tmpstr := tmpstr + inttoHex(ord(s[i]),2);
end;
result := pchar(tmpstr);
end; function myHextoStr(S: string): pchar;var hexS,tmpstr:string;
i:integer;
a:byte;
begin
hexS :=s;//应该是该字符串
if length(hexS) mod 2=1 then
begin
hexS:=hexS+'0';
end;
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 :=pchar(tmpstr);
end; function encryptstr(const s:string; skey:string):Pchar;stdcall;var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=string(myStrtoHex(s));
hexskey:=string(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+string(myStrtoHex(chr(c)));
end;
end;
result := Pchar(tmpstr);
end; function decryptstr(const s:string; skey:string):Pchar; stdcall;var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=s;//应该是该字符串
if length(hexS) mod 2=1 then
begin
result :='';
exit;
end;
hexskey:=string(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+string(myStrtoHex(chr(c)));
end;
end;
result := myHextoStr(tmpstr);
end;exports encryptstr,
decryptstr;begin
end.
uses
SysUtils,
Classes;
{$R *.res} function myStrtoHex(s: string): pchar;var tmpstr:string;
i:integer;
begin
tmpstr := '';
for i:=1 to length(s) do
begin
tmpstr := tmpstr + inttoHex(ord(s[i]),2);
end;
result := pchar(tmpstr);
end; function myHextoStr(S: string): pchar;var hexS,tmpstr:string;
i:integer;
a:byte;
begin
hexS :=s;//应该是该字符串
if length(hexS) mod 2=1 then
begin
hexS:=hexS+'0';
end;
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 :=pchar(tmpstr);
end; function encryptstr(const s:string; skey:string):Pchar;stdcall;var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=string(myStrtoHex(s));
hexskey:=string(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+string(myStrtoHex(chr(c)));
end;
end;
result := Pchar(tmpstr);
end; function decryptstr(const s:string; skey:string):Pchar; stdcall;var
i,j: integer;
hexS,hexskey,midS,tmpstr:string;
a,b,c:byte;
begin
hexS :=s;//应该是该字符串
if length(hexS) mod 2=1 then
begin
result :='';
exit;
end;
hexskey:=string(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+string(myStrtoHex(chr(c)));
end;
end;
result := myHextoStr(tmpstr);
end;exports encryptstr,
decryptstr;begin
end.
把encryptstr和decryptstr在def文件声明导出。
函数实现用VC的格式写就可以了。