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

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

2011-06-17 17:31 357 查看
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参数则为加密.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐