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.