File APIs for Java Developers
Manipulate DOC, XLS, PPT, PDF and many others from your application.
The moose likes JDBC and Relational Databases and the fly likes Encrypted database with HSQL Big Moose Saloon
  Search | Java FAQ | Recent Topics | Flagged Topics | Hot Topics | Zero Replies
Register / Login

Win a copy of Java Interview Guide this week in the Jobs Discussion forum!
JavaRanch » Java Forums » Databases » JDBC and Relational Databases
Bookmark "Encrypted database with HSQL" Watch "Encrypted database with HSQL" New topic

Encrypted database with HSQL

Ankit Garg

Joined: Aug 03, 2008
Posts: 9466

Howdy ranchers,

I'm using HSQL in my application (server mode) and I want to encrypt the database. The HSQL documentation for this is here which IMO isn't clear enough to understand. I searched the HSQL Forum and mailing archives but found nothing. So has anyone worked with encrypted database with HSQL? I would appreciate any help on this.


SCJP 6 | SCWCD 5 | Javaranch SCJP FAQ | SCWCD Links
Ulf Dittmer

Joined: Mar 22, 2005
Posts: 42965
First you need to create the encryption key. The following code assumes that "some_table" exists in "some_db" (neither matters), and that you want to use AES encryption.

Store the key in a secure place. Now you can create an encrypted DB like so:

DriverManager.getConnection("jdbc:hsqldb:file:_some_encrypted_db;crypt_key="+key+";crypt_type=AES", "SA", "")

Replace "AES" with whatever cipher you want to use, like DESede. The crypto uses JCE, so anything that JCE supports, HSQLDB does too. You can even use a different crypto provider; the HSQLDB docs explain how.
Ankit Garg

Joined: Aug 03, 2008
Posts: 9466

Ha ha, it worked. Thanks so much Ulf . I tried the CRYPT_KEY command before posting the question here and it didn't work. I was using HSQL 1.8 and I updated it to HSQL 2 and it worked. I start the db in Server mode in my code, so if anyone else does it, you'll have to set the crypt key when setting the database properties in code

If you want to connect to the database using DatabaseManager of HSQL, then the command would be something like this

java -cp hsqldb.jar org.hsqldb.util.DatabaseManager --url "jdbc:hsqldb:hsql://localhost/database_name;crypt_key=KEY_GOES_HERE;crypt_type=AES" --user SA

from the DatabaseManager utility you can create the tables in the database (if you already don't have an encrypted database file)
I agree. Here's the link:
subject: Encrypted database with HSQL
It's not a secret anymore!