delphi 2010 下的一个字符串加密函数,可对中文进行加/解密

function Crypt(s: String; const bEncrypt: boolean = True): String;  //加、解密
const
 mm=7;
 key:array[0..mm] of word=($A2,$F9,$AA,$55,$E3,$6D,$8A,$47);
 //这里的常量是加密异或码(作为加密密钥用的),可自行修改。

var
 i, L : DWord;
 b, k : word;
begin
 Result := '';
 L:=Length(S);
 if L<1 then exit;
 k:=0;
 if bEncrypt then
   //加密
   for i := 1 to L do begin
     b := word(S[i]) xor key[k];
     Result := Result + IntToHex(b,4);
     inc(k);
     if k>mm then k:=0;
   end
  else  begin
   //还原
   k:=0;
   i:=0;
   while i<L div 4 do begin
     Result := Result + chr( StrToInt('$'+copy(s,i*4+1,4)) xor key[k]);
     inc(i);
     inc(k);
     if k>mm then k:=0;
   end;
 end;
end;

//说明:1个字符转为4个16进制数字.因为会出现不可见字符,如果不使用16进制数字表示,会出现还原问题.另外,因delphi2010将汉字认作是一个字符,所以用4个16进制数字表示加密后的字符.如果仅仅是加密英文用2个16进制数字就可以了.不提供bEncrypt参数则为加密.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值