using SQLCipher with android shipped sqlite database file

android, java, sqlcipher

Solution

This is going to be a bit complicated. Since the database file format is different between SQLite and SQLCipher for Android, and since you want to ship an unencrypted database, you will have to do a few things.

First, I'd get `SQLiteAssetHelper` going, to deliver the unencrypted database to your environment.

Then, use standard SQLCipher for Android to create an empty-but-encrypted database.

Next, you will need to implement the code to copy the data out of the packaged-but-unencrypted database and insert it into the empty-but-encrypted database.

Once that is all done, you can close and delete the packaged-but-unencrypted database and just use the encrypted one.

This might make a useful extension to `SQLiteAssetHelper`, someday...

Problem

I have a database file reset in the `assets` file. How can I use `SQLCipher` to encrypt the database in android?

Original source

Related problems