有一个字典库,需要加密和解密.
以前没做过,请高手指点一下思路.

解决方案 »

  1.   

    怎么个加法?你要是别人看不见还是别人要密码才能看见?就算你加了密,人家不是一样可以copy吗只要是存在计算机上的东西,估计很少有别人拿不走的
      

  2.   

    copy就不是我们能控制的了,我们只要他看不出原来的文本,看到的只是加密后的文本,
    这样就算达到了加密的目的了.
    当然,他们会破译,这就看加密算法了.呵呵.
      

  3.   


    我新建了一个类型type 
      TMyRecord = record
       
             .....
      end;
    然后定义了一个文件类型:F : file of TMyRecord;然后,再把文件以file 类型重写的.
      

  4.   

    unit Unit1;interfaceuses
      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.