2010-12-02 7 views
1

Für zusätzliche Sicherheit möchte ich eine MS Access 2000 (* .mdb) Datenbankdatei verschlüsseln/entschlüsseln.Verschlüsseln/Entschlüsseln einer MS Access 2000 (* .mdb) Datenbankdatei (zusätzliche Sicherheit)

Ich benutze Delphi 7 und ich suche eine freie oder opensource Lösung (möglich nur zwei Funktionen, die Ihnen erlauben, einen Dateinamen und einen Schlüssel zu übergeben).

Ich möchte die Entschlüsselung durchführen, bevor meine App startet, und die Verschlüsselung, wenn die App heruntergefahren wird. Wo sind die besten Orte, um dies zu tun? OnCreate, OnDestroy Ereignisse?

Ich nehme an, ich müsste zuerst ein kleines Dienstprogramm erstellen, das den Verschlüsselteil der Lösung verwendet, um zuerst die Datenbankdatei zu verschlüsseln?

dank

+0

Was genau denken Sie, werden Sie dies tun erreichen? –

Antwort

1

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.

+0

in Fall 4, wenn der Computer Stromausfall oder andere "nicht sauber" Shutdown die Daten werden auch ungeschützt sein. Wenn Sie keine Vorkehrungen treffen und die Anwendung immer noch sauber heruntergefahren wird, kann das System die Anwendung _monitoring_ vor dem _working_-Programm schließen, so dass es trotzdem möglich ist, mit einer unverschlüsselten Datei zu enden. – jachguate

+0

Danke, ich werde dies versuchen und sich an Sie wenden! – IElite

+0

jachguate, Sie haben Recht, denn das war meine primäre Empfehlung Update auf Zugriff 2007 oder neuer. – RRUZ

Verwandte Themen