Custom Encryption Adapters

db4o still provides a solution for high-security encryption by allowing any user to choose his own encryption mechanism that he thinks he needs. The db4o file IO mechanism is pluggable and any fixed-length encryption mechanism can be added. All that needs to be done is to write an IoAdapter plugin for db4o file IO.

This is a lot easier than it sounds. Simply:

.NET: Db4o.Configure().Io(new MyEncryptionAdapter());

However, you'll have to keep in mind that db4o will write partial updates. For example, it may write a full object and then only modify one field entry later on. Therefore it is not sufficient to en-/decrypt each access in isolation. You'll rather have to make up a tiling structure that defines the data chunks that have to be en-/decrypted together.

A community project containing an XTEA encryption IoAdapter implementation can be found here:

http://developer.db4o.com/ProjectSpaces/view.aspx/XTEA

Another method to inject encryption capabilities into db4o for instances of specific classes only is to implement and configure an en-/decrypting translator.