Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2351038
  • 博文数量: 321
  • 博客积分: 3440
  • 博客等级: 中校
  • 技术积分: 2992
  • 用 户 组: 普通用户
  • 注册时间: 2007-05-24 09:08
个人简介

我就在这里

文章分类

全部博文(321)

文章存档

2015年(9)

2014年(84)

2013年(101)

2012年(25)

2011年(29)

2010年(21)

2009年(6)

2008年(23)

2007年(23)

分类: Windows平台

2014-05-24 21:38:20


  1. Function EncrypKey (Src:String; Key:String):string;
  2.   var
  3.   idx :integer;
  4.   KeyLen :Integer;
  5.   KeyPos :Integer;
  6.   offset :Integer;
  7.   dest :string;
  8.   SrcPos :Integer;
  9.   SrcAsc :Integer;
  10.   TmpSrcAsc :Integer;
  11.   Range :Integer;
  12.     
  13.   begin
  14.   KeyLen:=Length(Key);
  15.   if KeyLen = 0 then key:='Think Space';
  16.   KeyPos:=0;
  17.   SrcPos:=0;
  18.   SrcAsc:=0;
  19.   Range:=256;
  20.     
  21.   Randomize;
  22.   offset:=Random(Range);
  23.   dest:=format('%1.2x',[offset]);
  24.   for SrcPos := 1 to Length(Src) do
  25.   begin
  26.   SrcAsc:=(Ord(Src[SrcPos]) + offset) MOD 255;
  27.   if KeyPos < KeyLen then KeyPos:= KeyPos + 1 else KeyPos:=1;
  28.   SrcAsc:= SrcAsc xor Ord(Key[KeyPos]);
  29.   dest:=dest + format('%1.2x',[SrcAsc]);
  30.   offset:=SrcAsc;
  31.   end;
  32.   Result:=Dest;
  33.   end;
  34.     
  35.   //解密函数
  36.   Function UncrypKey (Src:String; Key:String):string;
  37.   var
  38.   idx :integer;
  39.   KeyLen :Integer;
  40.   KeyPos :Integer;
  41.   offset :Integer;
  42.   dest :string;
  43.   SrcPos :Integer;
  44.   SrcAsc :Integer;
  45.   TmpSrcAsc :Integer;
  46.   Range :Integer;

  47.   begin
  48.   KeyLen:=Length(Key);
  49.   if KeyLen = 0 then key:='Think Space';
  50.   KeyPos:=0;
  51.   SrcPos:=0;
  52.   SrcAsc:=0;
  53.   Range:=256;
  54.   offset:=StrToInt('$'+ copy(src,1,2));
  55.   SrcPos:=3;
  56.   repeat
  57.   SrcAsc:=StrToInt('$'+ copy(src,SrcPos,2));
  58.   if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;
  59.   TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
  60.   if TmpSrcAsc <= offset then
  61.   TmpSrcAsc := 255 + TmpSrcAsc - offset
  62.   else
  63.   TmpSrcAsc := TmpSrcAsc - offset;
  64.   dest := dest + chr(TmpSrcAsc);
  65.   offset:=srcAsc;
  66.   SrcPos:=SrcPos + 2;
  67.   until SrcPos >= Length(Src);
  68.   Result:=Dest;
  69.   end;


阅读(1195) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~