Fork me on GitHub

Jackcess Encrypt

Jackcess Encrypt is an extension library for the Jackcess project which implements support for some forms of Microsoft Access and Microsoft Money encryption. Jackcess Encrypt is licensed under the Apache License (as of version 2.1.0).

This project is separate from the main Jackcess project for two main reasons:

  • The encryption support requires an additional library (Bouncy Castle). Making this support separate from the main Jackcess library allows users to avoid including unnecessary libraries.
    • Bouncy Castle Compatability - the Bouncy Castle library made a binary incompatible change in version 1.51. Versions of Jackcess Encrypt 2.1.0 and earlier are only compatible with Bouncy Castle 1.50 and earlier. Jackcess Encrypt 2.1.1 updated to Bouncy Castle 1.52, but added a shim layer which maintains compability with earlier versions of Bouncy Castle as well (see Feature Request 2 for more details).
  • Sourceforge previously had restrictions on the distribution of software which used encryption. Keeping this support in a separate project allowed the main Jackcess library to be distributed more freely.

Java 9+ Compatibility (2021-01-20)

While Jackcess Encrypt still only requires Java 8+, as of the 4.0.0 release it now includes an Automatic-Module-Name of com.healthmarketscience.jackcess.crypt in its manifest. This allows it to safely be used in the module path for Java 9+ projects. These changes correspond with the changes in Jackess 4.x.

As a consequence of supporting Java 9+ modules, the classes in this project needed to be moved to a new package in order to avoid the "split module" problem. The primary classes in this project are now in the com.healthmarketscience.jackcess.crypt package. This is a breaking change with respect to the 3.x release series.

Java 8+ Support (2019-02-09)

Jackcess Encrypt now requires Java 8+ as of the 3.0.0 release. All third party dependencies have been updated to the latest versions. These changes correspond with the changes in Jackess 3.0.0.

Brand New License! (2015-04-16)

In order to match the License changes made in Jackcess 2.1.0, the Jackcess Encrypt project has been relicensed under the Apache License, Version 2.0 (Jackcess Encrypt versions 2.1.0 and higher).

Jackcess Encrypt 2.0 (2013-08-26)

In order to match the API changes made in Jackess 2.0, the Jackcess Encrypt project has made a similar version change. Read the Upgrade Guide for full details.

Sample code

This project's encryption support can be utilized by providing a CryptCodecProvider when opening an Access Database.

  • Open a Database with normal Jet file encoding:
    Database db = new DatabaseBuilder(myDbFile)
      .setCodecProvider(new CryptCodecProvider())
      .open();
  • Open a Database with an encoding which requires a password to decode:
    Database db = new DatabaseBuilder(myDbFile)
      .setCodecProvider(new CryptCodecProvider("MyDbPassword"))
      .open();