您的位置:首页 > 编程语言 > Delphi

delphi 对字符串进行加密实现

2013-11-28 11:11 239 查看
首先有两个自定的转换函数:

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;  

现在已经可以使用了,调用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'); 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: