打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
DELPHI加密字串(异或运算加密)

这个本来我我在DELPHI盒子看到的,后来我对其作了一点修改,这里上全部代码,可以直接用

首先有两个自定的转换函数:

  1. function myStrToHex(s:string):string//字串转16进制  
  2. var  
  3.   TmpStr:string;  
  4.   i:integer;  
  5. begin  
  6.   TmpStr:='';  
  7.   for i:=1 to Length(s)do  
  8.     TmpStr:=TmpStr+IntToHex(ord(s[i]),2);  
  9.   Result:=TmpStr;  
  10. end;  
  11.   
  12. function myHexToStr(S:string):string//16进制转字串  
  13. var  
  14.   HexS,TmpStr:string;  
  15.   i:Integer;  
  16.   a:Byte;  
  17. begin  
  18.   HexS:=s;  
  19.   if Length(HexS) mod 2=1 then  
  20.     HexS:=HexS+'0';  
  21.   TmpStr:='';  
  22.   for i:=1 to(Length(HexS)div 2)do  
  23.   begin  
  24.     a:=StrToInt('$'+HexS[2*i-1]+HexS[2*i]);  
  25.     TmpStr:=TmpStr+Chr(a);  
  26.   end;  
  27.   Result:=TmpStr;  
  28. end;  

然后就是加密、解密函数了:

  1. {两个函数的参数相同,s为要加密、解密的字串;sKey为密匙}  
  2. function EncryptStr(const s:string;sKey:string):string//加密  
  3. var  
  4.   i,j:Integer;  
  5.   HexS,HexsKey,MidS,TmpStr:string;  
  6.   a,b,c:byte;  
  7. begin  
  8.   HexS:=myStrToHex(s);  
  9.   HexsKey:=myStrToHex(sKey);  
  10.   MidS:=HexS;  
  11.   for i:=1 to(Length(HexsKey)div 2)do  
  12.   begin  
  13.     if i<>1 then MidS:=TmpStr;  
  14.     TmpStr:=''//下面要用到TmpStr,所以要清空  
  15.     for j:=1 to (Length(MidS)div 2)do  
  16.     begin  
  17.       a:=StrToInt('$'+midS[2*j-1]+midS[2*j]);  
  18.       b:=StrToInt('$'+HexsKey[2*i-1]+HexsKey[2*i]);  
  19.       c:=a xor b;  
  20.       tmpstr:=TmpStr+myStrToHex(Chr(c));  
  21.     end;  
  22.   end;  
  23.   Result:=TmpStr;  
  24. end;  
  25.   
  26. function DecryptStr(const s:string;sKey:string):string//解密  
  27. var  
  28.   i,j:Integer;  
  29.   HexS,HexsKey,MidS,TmpStr:string;  
  30.   a,b,c:Byte;  
  31. begin  
  32.   HexS:=s;  
  33.   if Length(HexS)mod 2=1 then //检查是否为字符串  
  34.   begin  
  35.     ShowMessage('密文错误!');  
  36.     Exit;  
  37.   end;  
  38.   HexsKey:=myStrToHex(sKey);  
  39.   TmpStr:=HexS;  
  40.   MidS:=HexS;  
  41.   for i:=(length(HexsKey) div 2downto 1 do  
  42.   begin  
  43.     if i<>(length(HexsKey) div 2)then  
  44.       MidS:=TmpStr;  
  45.     TmpStr:=''//下面要用到TmpStr,所以要清空  
  46.     for j:=1 to(length(MidS) div 2)do  
  47.     begin  
  48.       a:=StrToInt('$'+MidS[2*j-1]+MidS[2*j]);  
  49.       b:=StrToInt('$'+HexsKey[2*i-1]+HexsKey[2*i]);  
  50.       c:=a xor b;  
  51.       TmpStr := TmpStr+myStrToHex(Chr(c));  
  52.     end;  
  53.   end;  
  54.     Result:=myHexToStr(TmpStr);  
  55. end;  

现在已经可以使用了,调用EncryptStr和DecryptStr分别加密、解密

例:

  1. Edit1.Text:=EncryptStr('Hello','delphi');  
  2.   
  3. ////////////////////////////////////////  
  4.   
  5. Edit1.Text:=DecryptStr(Edit1.Text,'delphi');  
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
delphi 字符串加密收集
【delphi】实现微信公众号,小程序消息加密解密函数
Java中一个字符到底多少个字节
一步步教你优化Delphi字串查找
Delphi读取excel数据
Delphi XE7 用indy开发微信公众平台(3)
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服