delphi加密解密的函数

unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;

type
TForm1
= class(TForm)
    Edit1: TEdit;
    Edit2: TEdit;
    Button1: TButton;
    Edit3: TEdit;
    Edit4: TEdit;
    Button2: TButton;
   
procedure FormShow(Sender: TObject);
   
procedure Button1Click(Sender: TObject);
   
procedure Button2Click(Sender: TObject);
private
   
{ Private declarations }
public
   
{ Public declarations }


    stringkey : string ;

end;

var
Form1: TForm1;

implementation

{$R *.dfm}


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;


procedure TForm1.FormShow(Sender: TObject);
begin
Edit1.Clear;
Edit2.Clear;
Edit3.Clear;
Edit4.Clear;
stringkey :
= 'password';

end;

procedure TForm1.Button1Click(Sender: TObject);
begin


Edit2.Text :
= EncrypKey(Edit1.Text,stringkey);

end;

procedure TForm1.Button2Click(Sender: TObject);
begin


Edit4.Text :
= UncrypKey(Edit3.Text,stringkey)

end;

end.
posted @ 2008-12-21 11:32  vincent.lee  阅读(675)  评论(0)    收藏  举报