The Nine

The Nine 是一名非常热爱编程以及旅游、心理学的青年,Delphi将是The Nine的主要编程语言,如果您的爱好和The Nine相近,那么请关注,如果您需要与我联系,请点击"发信给作者"我会及时和你联系!

两个字符串加密解密函数

首先定义一个常量数组

const
  XorKey:array[0..7] of Byte=($B2,$09,$AA,$55,$93,$6D,$84,$47); //字符串加密用

然后在程序里加入以下两个函数,具体用法就不用多说了吧!

function Enc(Str:String):String;  //字符加密函數   這是用的一個異或加密
var
i,j:Integer;
begin
Result:='';
j:=0;
for i:=1 to Length(Str) do
   begin
     Result:=Result+IntToHex(Byte(Str[i]) xor XorKey[j],2);
     j:=(j+1) mod 8;
   end;
end;

function Dec(Str:String):String;   //字符解密函數
var
i,j:Integer;
begin
Result:='';
j:=0;
for i:=1 to Length(Str) div 2 do
   begin
     Result:=Result+Char(StrToInt('$'+Copy(Str,i*2-1,2)) xor XorKey[j]);
     j:=(j+1) mod 8;
   end;
end;

//--------------------第二个方法--------------------------------
public
    { Public declarations }
    stringkey : string ;
    
在FormShow里 stringkey := 'password';
Edit2.Text := EncrypKey(Edit1.Text,stringkey);  //解密 
Edit4.Text := UncrypKey(Edit3.Text,stringkey);  //加密 
    
Function EncrypKey (Src:String; Key:String):string;
var
  idx :integer;
  KeyLen :Integer;
  KeyPos :Integer;
  offset :Integer;
  dest :string;
  SrcPos :Integer;
  SrcAsc :Integer;
  TmpSrcAsc :Integer;
  Range :Integer;

begin
  KeyLen:=Length(Key);
  if KeyLen = 0 then key:='Think Space';
  KeyPos:=0;
  SrcPos:=0;
  SrcAsc:=0;
  Range:=256;

  Randomize;
  offset:=Random(Range);
  dest:=format('%1.2x',[offset]);
for SrcPos := 1 to Length(Src) do
begin
  SrcAsc:=(Ord(Src[SrcPos]) + offset) MOD 255;
  if KeyPos < KeyLen then KeyPos:= KeyPos + 1 else KeyPos:=1;
  SrcAsc:= SrcAsc xor ord(Key[KeyPos]);
  dest:=dest + format('%1.2x',[SrcAsc]);
  offset:=SrcAsc;
end;
  Result:=Dest;
end;

//解密函数
Function UncrypKey (Src:String; Key:String):string;
var
idx :integer;
KeyLen :Integer;
KeyPos :Integer;
offset :Integer; 
dest :string;
SrcPos :Integer;
SrcAsc :Integer;
TmpSrcAsc :Integer;
Range :Integer; 
begin
  KeyLen:=Length(Key);
  if KeyLen = 0 then key:='Think Space';
  KeyPos:=0;
  SrcPos:=0;
  SrcAsc:=0;
  Range:=256;
  offset:=StrToInt('$'+ copy(src,1,2));
  SrcPos:=3;
repeat
  SrcAsc:=StrToInt('$'+ copy(src,SrcPos,2));
  if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;
  TmpSrcAsc := SrcAsc xor ord(Key[KeyPos]);
  if TmpSrcAsc <= offset then
    TmpSrcAsc := 255 + TmpSrcAsc - offset
  else
    TmpSrcAsc := TmpSrcAsc - offset;
    dest := dest + chr(TmpSrcAsc);
    offset:=srcAsc;
    SrcPos:=SrcPos + 2;
until SrcPos >= Length(Src);
  Result:=Dest;
end;

评论
热度(4)

© The Nine | Powered by LOFTER