const FileHead1:array[0..15] of byte=($00,$01,$00,$00,$53,$74,$61,$6E,$64,$61,$72,$64,$20,$4A,$65,$74) ;//对应MDB文件的前16个字节 FileHead2:array[0..15] of byte=($43,$6f,$70,$79,$72,$69,$67,$68,$74,$20,$4a,$6f,$65,$4c,$6f,$20) ; //从64开始,长度也是64 Pwd1 :array[0..63] of Byte=($79,$5b,$df,$2e,$7c,$2a,$22,$d4,$7c,$99,$05,$13, $98,$fd,$a5,$da,$d3,$88,$c0,$57,$83,$66,$5f,$95,$f8,$d0,$89,$24, $85,$67,$c6,$1f,$27,$44,$d2,$ee,$cf,$65,$ed,$ff,$07,$c7,$46,$a1, $78,$16,$0c,$ed,$e9,$2d,$62,$d4,$54,$06,$00,$00,$34,$2e,$30,$00, $00,$00,$00,$00); //随机 Pwd2 :array[0..63] of Byte=($b9,$6b,$d0,$ee,$bc,$ea,$ee,$d0,$bc,$99,$06,$fd, $98,$0d,$a6,$da,$dd,$88,$c0,$6b,$8d,$66,$60,$96,$08,$d0,$89,$e0, $86,$6b,$c6,$f0,$eb,$00,$de,$ee,$c0,$66,$ed,$00,$0b,$cb,$06,$af, $b8,$f6,$0c,$ed,$e9,$ed,$6e,$d0,$60,$06,$00,$00,$d0,$ee,$d0,$00, $00,$00,$00,$00); type TForm1 = class(TForm) Button1: TButton; Button2: TButton; OpenDialog1: TOpenDialog; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private { Private declarations } public { Public declarations } //加解密函数。 procedure EncryptDecryptMDB(filename:string; Enc:Boolean); end;
var Form1: TForm1;
implementation
{$R *.dfm}
{ TForm1 }
procedure TForm1.EncryptDecryptMDB(filename: string; Enc:Boolean); var f:TFileStream; begin if not FileExists(filename ) then Exit; F:=TFileStream.Create(filename,fmOpenWrite); try f.Seek($00,soFromBeginning); if Enc then f.Write(FileHead2,16) else f.Write(FileHead1,16); f.Seek($64,soFromBeginning); if Enc then f.Write(pwd2,64) else f.Write(pwd1,64); finally f.Free; end; end;
procedure TForm1.Button1Click(Sender: TObject); var fn :string; begin if OpenDialog1.Execute then fn :=OpenDialog1.FileName;
EncryptDecryptMDB(fn,True);
end;
procedure TForm1.Button2Click(Sender: TObject); var fn :string; begin if OpenDialog1.Execute then fn :=OpenDialog1.FileName;