How to Encrypt a Microsoft Access Database in Visual Basic

Last reviewed: June 21, 1995
Article ID: Q104875
The information in this article applies to:

- Microsoft Visual Basic programming system for Windows, version 3.0

SUMMARY

Database encryption has nothing to do with security. However, you can use database encryption to prevent someone from using a file or disk editor to read and write data in a Microsoft Access .MDB file. This article shows by example how to encrypt a Microsoft Access database file in Microsoft Visual Basic version 3.0 for Windows.

MORE INFORMATION

Microsoft Access reads and writes all data a page at a time. Each page is always 2K in size. Encryption is done at the page level, not at the data level. This means the encryption process has no knowledge of what is on the page, only that there is 2K of data that needs to be encrypted and written. or read and decrypted.

Everything in a Microsoft Access .MDB database file is encrypted, including tables, queries, forms, indexes, and so on. Microsoft Access uses the RSA company algorithm for database encryption.

The overhead involved in encrypting and decrypting causes is a performance degradation of approximately 10-15% in encrypted databases. Encrypted files cannot be compressed using tools such as PKZip, Stacker, MS-DOS version 6 DoubleSpace, and so on.

Encryption in Visual Basic

Use the CompactDatabase statement in Microsoft Visual Basic version 3.0 for Windows to encrypt a Microsoft Access database file. For more information on the CompactDatabase statement, review pages 90-92 in the Visual Basic version 3.0 "Language Reference" manual.

Step-by-Step Encryption Example

  1. Start Visual Basic or from the File menu, choose New Project (ALT, F, N) if Visual Basic is already running. Form1 is created by default.

  2. From the Windows menu, choose Data Manager.

  3. In Data Manager, choose New Database from the File menu. Then select either Microsoft Access 1.0 or Microsoft Access 1.1.

  4. Enter the name TESTING.MDB for the Microsoft Access file name that you are about to create.

  5. Click the New button and enter Table1 for the table name.

  6. Click the Add button and enter First Name as the Field Name. Then select Text for the Field Type and enter 15 as the Field Size.

  7. Click the Add button for Indexes, and enter First Name Index as the Index Name. Then select Unique, Primary and click Done.

  8. Click the Open button, then the Add button. Next enter a name (Bob, for example) into the First Name field. Then click the Add button.

  9. Close the Data Manager and add a Command button to Form1.

  10. Add the following code to the Command1 Click event procedure:

        Sub Command1_Click ()
           Const DB_ENCRYPT = 2
           Const DB_LANG_GENERAL = ";LANGID=0x0809;CP=1252;COUNTRY=0"
    

           '** Enter the following two lines as one, single line:
           CompactDatabase "C:\VB\TESTING.MDB", "C:\VB\NEWTEST.MDB",
    
              DB_LANG_GENERAL, DB_ENCRYPT
        End Sub
    
    

  11. From the Run menu, choose Start (ALT, R, S) to run the program. Click

        the Command1 button to encrypt the TESTING.MDB database file. To check
        the new NEWTEST.MDB file, choose Data Manager from the Window menu in
        Visual Basic version 3.0 for Windows. In the Data Manager, choose Open
        Database from the File menu. Then select the NEWTEST.MDB file.
    


Additional reference words: 3.00
KBCategory: kbprg kbcode
KBSubcategory: APrgDataAcc


THE INFORMATION PROVIDED IN THE MICROSOFT KNOWLEDGE BASE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND. MICROSOFT DISCLAIMS ALL WARRANTIES, EITHER EXPRESS OR IMPLIED, INCLUDING THE WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT SHALL MICROSOFT CORPORATION OR ITS SUPPLIERS BE LIABLE FOR ANY DAMAGES WHATSOEVER INCLUDING DIRECT, INDIRECT, INCIDENTAL, CONSEQUENTIAL, LOSS OF BUSINESS PROFITS OR SPECIAL DAMAGES, EVEN IF MICROSOFT CORPORATION OR ITS SUPPLIERS HAVE BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES. SOME STATES DO NOT ALLOW THE EXCLUSION OR LIMITATION OF LIABILITY FOR CONSEQUENTIAL OR INCIDENTAL DAMAGES SO THE FOREGOING LIMITATION MAY NOT APPLY.

Last reviewed: June 21, 1995
© 1998 Microsoft Corporation. All rights reserved. Terms of Use.