有一个字典库,需要加密和解密.
以前没做过,请高手指点一下思路.
以前没做过,请高手指点一下思路.
解决方案 »
- delphi 2007中的notebook组件是怎么用的?
- reportmachine 报表的问题 access violation at address in module ‘adort160.bpl’read of address ...
- 怎样使窗体的标题栏闪烁啊
- 高手指教--socket服务器提示:“Read Err64 提定的网络名不可用”的原因?
- FileDateToDateTime(Handle)没法读取正在运动的文件?
- 关于文件关联问题求教
- 大量病毒入侵!!!
- 请问在注册表中哪一个键值是IE当前主页的键值谢谢
- 理解ado连结参数
- 入库问题请教
- 报表问题请教,急!
- 如何读取其他软件中的内容
这样就算达到了加密的目的了.
当然,他们会破译,这就看加密算法了.呵呵.
我新建了一个类型type
TMyRecord = record
.....
end;
然后定义了一个文件类型:F : file of TMyRecord;然后,再把文件以file 类型重写的.
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.