本文整理自网络,侵删。
delphi源码一个对字符加密解密的实例
实例中的两个加密解密函数是从网上找的,我做了部分修改和优化。
具体代码如下。对中文加密也可以。
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
edt1: TEdit;
lbl1: TLabel;
edt2: TEdit;
lbl2: TLabel;
edt3: TEdit;
lbl3: TLabel;
edt4: TEdit;
lbl4: TLabel;
btn1: TButton;
btn2: TButton;
procedure btn1Click(Sender: TObject);
procedure btn2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
//加密函数
Function EncrypKey(Src:String; Key:String):string;
var
KeyLen,KeyPos,offset :integer;
dest :string;
SrcPos,SrcAsc,Range :Integer;
begin
KeyLen:=Length(Key);
if KeyLen = 0 then key:='Think Space';
KeyPos:=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
KeyLen,KeyPos,offset:integer;
dest:string;
SrcPos,SrcAsc,TmpSrcAsc:Integer;
begin
KeyLen:=Length(Key);
if KeyLen = 0 then key:='Think Space';
KeyPos:=0;
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.btn1Click(Sender: TObject);
begin
if Boolean(Length(Trim(edt2.Text))) then edt3.Text := EncrypKey(Trim(edt2.Text), Trim(edt1.Text));
end;
procedure TForm1.btn2Click(Sender: TObject);
begin
if Boolean(Length(Trim(edt3.Text))) then edt4.Text := UncrypKey(Trim(edt3.Text), Trim(edt1.Text));
end;
end.
=======================
相关阅读 >>
Delphi [函数] unicode 检查字符串是否含中文字
Delphi 新版 thttpclient组件同步下载文件方法
Delphi2010 图片格式转换bmp, png,jpeg, gif, tiff , wmphoto
Delphi sysutils.comparestr、sysutils.comparetext - 字符串比较
更多相关阅读请进入《Delphi》频道 >>