delphi源码一个对字符加密解密的实例


本文整理自网络,侵删。

 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操作ini配置文件

Delphi fdquery 验证登录

Delphi datasnap双缓存下载文件

Delphi中使用自定义字体

Delphi 新版 thttpclient组件同步下载文件方法

Delphi listbox自动获取列表框中的组件焦点

Delphi2010 图片格式转换bmp, png,jpeg, gif, tiff , wmphoto

Delphi sysutils.comparestr、sysutils.comparetext - 字符串比较

Delphi 比较版本号

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...