Ich verstehe die Gründe, die Sie haben Ihre alte Access-Datenbank zu verschlüsseln, weil die Sicherheit des Zugangs 2000 und 2003 sehr schwach ist. Aber meine primäre Empfehlung ist, welche Version auf Access 2007 oder höher zu aktualisieren versucht, die die Microsoft Cryptographic API verwendet und wesentliche Sicherheitsverbesserungen beinhaltet.
Wenn Sie nicht upgraden können, hier hinterlasse ich eine Option, um Ihre MDB-Datei zu verschlüsseln.
1) Sie Daten verschlüsseln Sie die JwaWinCrypt
Gerät verwendet werden können, die Teil der Jedi JWSCL
Bibliothek ist, können Sie diese Bibliothek von here herunterladen.
Überprüfen Sie diese Beispielfunktion, die 3DES Algorithmus verwendet, um eine Datei zu verschlüsseln.
uses
Classes,
JwaWinType,
JwaWinCrypt,
SysUtils;
procedure CryptFile(Const InFileName, OutFileName, Password: AnsiString; Encrypt: Boolean);
const
BufferSize=1024*64;
var
StreamSource : TFileStream;
StreamDest : TFileStream;
CRYPTPROV : HCRYPTPROV;
CRYPTHASH : HCRYPTHASH;
CRYPTKEY : HCRYPTKEY;
Buffer : LPBYTE;
BytesIn : DWORD;
Final : Boolean;
begin
CryptAcquireContext(CRYPTPROV, nil, nil, PROV_RSA_FULL, CRYPT_VERIFYCONTEXT);
try
CryptCreateHash(CRYPTPROV, CALG_3DES_112, 0, 0, CRYPTHASH);
try
CryptHashData(CRYPTHASH, @Password[1], Length(Password), 0);
CryptDeriveKey(CRYPTPROV, CALG_3DES, CRYPTHASH, 0, CRYPTKEY);
finally
CryptDestroyHash(CRYPTHASH);
end;
StreamSource := TFileStream.Create(InFileName, fmOpenRead or fmShareDenyWrite);
StreamDest := TFileStream.Create(OutFileName, fmCreate);
try
GetMem(Buffer, BufferSize);
try
repeat
BytesIn := StreamSource.Read(Buffer^, BufferSize);
Final := (StreamSource.Position >= StreamSource.Size);
if Encrypt then
CryptEncrypt(CRYPTKEY, 0, Final, 0, Buffer, BytesIn, BytesIn)
else
CryptDecrypt(CRYPTKEY, 0, Final, 0, Buffer, BytesIn);
StreamDest.Write(Buffer^, BytesIn);
until Final;
finally
FreeMem(Buffer, BufferSize);
end;
finally
StreamSource.Free;
StreamDest.Free;
end;
finally
CryptReleaseContext(CRYPTPROV, 0);
end;
end;
und auf diese Weise verwenden
zu verschlüsseln, um eine Datei
CryptFile('C:\temp\in.zip', 'C:\temp\out.zip','fdkjldf3832kka83' ,True);
zu entschlüsseln, um eine Datei
CryptFile('C:\temp\out.zip', 'C:\temp\in.zip','fdkjldf3832kka83' ,True);
2) über die Position des Codes encryot und Entschlüsseln Die Daten hängen vom Design Ihrer Anwendung ab.
3) Beachten Sie, dass Ihre Daten ungeschützt sind, wenn Ihre Anwendung abstürzt.
4) vielleicht die beste Option ist eine kleine Anwendung zu bauen, die Ihre Daten entschlüsseln und Ihre Hauptanwendung starten und den Status überwachen, bis die Hauptanwendung endet. und dann deine Daten erneut verschlüsseln.
Was genau denken Sie, werden Sie dies tun erreichen? –