delphi自定义加解密函数

2015-03-12
function UncrypStr(const __src, __key: string): string;
var
  nKeyLen, nKeyPos, nOffSet,
  nSrcPos, nSrcAsc, nTmpSrcAsc: Integer;
  sDest, sSrc, sKey: AnsiString;
begin
  sSrc := AnsiString(__src);
  sKey := AnsiString(__key);
  nKeyLen := Length(sKey);
  if nKeyLen = 0 then sKey := 'tigercat';
  nKeyPos := 0;
  nOffSet := StrToInt(string('$'+ Copy(sSrc, 1, 2)));
  nSrcPos := 3;
  repeat
    nSrcAsc := StrToInt(string('$' + Copy(sSrc, nSrcPos, 2)));
    if nKeyPos < nKeyLen then nKeyPos := nKeyPos + 1
    else nKeyPos := 1;
    nTmpSrcAsc := nSrcAsc xor Ord(sKey[nKeyPos]);
    if nTmpSrcAsc <= nOffSet then nTmpSrcAsc := 255 + nTmpSrcAsc - nOffSet
    else nTmpSrcAsc := nTmpSrcAsc - nOffSet;
    sDest := sDest + AnsiChar(nTmpSrcAsc);
    nOffSet := nSrcAsc;
    nSrcPos := nSrcPos + 2;
  until nSrcPos >= Length(sSrc);
  Result := string(sDest);
end;


function EncrypStr(const __src, __key: string): string;
var
  nKeyLen, nKeyPos, nOffSet,
  nSrcPos, nSrcAsc, nRnage: Integer;
  sDest: string;
  sSrc, sKey: AnsiString;
begin
  sSrc := AnsiString(__src);
  sKey := AnsiString(__key);
  nKeyLen := Length(sKey);
  if nKeyLen = 0 then sKey := 'tigercat';
  nKeyPos := 0;
  nRnage := 256;
  Randomize;
  nOffSet := Random(nRnage);
  sDest := Format('%1.2x', [nOffSet]);
  for nSrcPos := 1 to length(sSrc) do begin
    nSrcAsc := (Ord(sSrc[nSrcPos]) + nOffSet) mod 255;
    if nKeyPos < nKeyLen then nKeyPos := nKeyPos + 1
    else nKeyPos := 1;
    nSrcAsc := nSrcAsc xor Ord(sKey[nKeyPos]);
    sDest := sDest + Format('%1.2x', [nSrcAsc]);
    nOffSet := nSrcAsc;
  end;
  Result := sDest;
end;

类别:编程相关 | 阅读:1393 | 评论:0 | 标签:delphi 加密

想收藏或者和大家分享这篇好文章→

“delphi自定义加解密函数”共有0条留言

发表评论

姓名:

邮箱:

网址:

验证码:

公告

2014年10月4日创建

标签云

最近评论

友情链接