一个使用秘钥加/解密字符串的delphi函数

需要用到这个函数的时候,网上搜查了一下,资源倒不少,可是都是由于版本或者其他的原因,均不凑效;

只得自己动手进行了一番改造,终于搞掂!

本程序在XE2无错运行,请放心使用:)


//字符串秘钥加解密函数 (keystr 秘钥)
function Crypt3(s,keystr:String; const bEncrypt: boolean = True): String;
  //字符串转为16进制表达字符
  function MyStrToHex(AStr: string): string;
  var
    I ,Len: Integer;
    s:char;
  begin
    len:=length(AStr);
    Result:='';
    for i:=1 to len  do
    begin
      s:=AStr[i];
      Result:=Result + IntToHex(Ord(s),2); //将字符串转化为16进制字符串,
    end;
  end;

var
  i, L: DWord;
  b, k : word;
  mm: Integer;
  key: array of word;
begin
  Result := '';
  L:=Length(S);
  if L<1 then
    exit;

  //变换处理秘钥字符串
  keystr:= MyStrToHex(keystr);
  mm := (length(keystr) div 2)-1;
  if mm<0 then
  begin
    exit;
  end;
  setlength(key,mm+1);
  for i := 0 to mm do
  begin
    key[i] :=  StrToInt('$'+copy(keystr,i*2+1,2));
  end;


  k:=0;
  if bEncrypt then
    //加密
    for i := 1 to L do
    begin
     b := word(S[i]) xor ord(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;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值