首页 > 代码库 > DELPHI加密字串(异或运算加密)

DELPHI加密字串(异或运算加密)

首先有两个自定的转换函数:    function myStrToHex(s:string):string; //字串转16进制     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; //16进制转字串     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 myStrToHex(s:string):string; //字串转16进制  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; //16进制转字串  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;          然后就是加密、解密函数了:    {两个函数的参数相同,s为要加密、解密的字串;sKey为密匙}    function EncryptStr(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:=‘‘; //下面要用到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 DecryptStr(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        ShowMessage(‘密文错误!‘);        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:=‘‘; //下面要用到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;    {两个函数的参数相同,s为要加密、解密的字串;sKey为密匙}  function EncryptStr(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:=‘‘; //下面要用到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 DecryptStr(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      ShowMessage(‘密文错误!‘);      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:=‘‘; //下面要用到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;          现在已经可以使用了,调用EncryptStr和DecryptStr分别加密、解密         例:    [delphi] view plaincopyprint?Edit1.Text:=EncryptStr(‘Hello‘,‘delphi‘);        ////////////////////////////////////////         Edit1.Text:=DecryptStr(Edit1.Text,‘delphi‘);    Edit1.Text:=EncryptStr(‘Hello‘,‘delphi‘);    ////////////////////////////////////////    Edit1.Text:=DecryptStr(Edit1.Text,‘delphi‘);        

  

DELPHI加密字串(异或运算加密)