encrypt sqlite database Android:
Step #0: Add the code to your UI to prompt the user to enter a passphrase.
Step #1: Download the SQLCipher for Android ZIP file.
Step #2: UnZIP the ZIP file and navigate to the directory that has an assets/
and a libs/
folder.
Step #3: Copy the contents of the assets/
directory into your project's assets/
directory.
Step #4: Copy the contents of the libs/
directory into your project's libs/
directory. Gradle/Android Studio users will also need to add a line to the top-level dependencies
closure loading up the contents of libs/
, if you do not have one already.
Step #5: Replace all relevant android.database.*
and android.database.sqlite.*
imports with their SQLCipher for Android equivalents. If you are using an IDE that can help you resolve missing imports (e.g., Ctrl-Shift-O in Eclipse), the easiest thing to do is to get rid of all existing android.database.*
and android.database.sqlite.*
imports and let the IDE help resolve them. Choose the net.sqlcipher
imports when given the choice.
Step #6: You will now have compiler errors on a few methods where you open a database (e.g., getReadableDatabase()
on SQLiteOpenHelper
), where you now need to pass in the passphrase you collected from the user in Step #0.
This will work for new apps starting up with new databases. There is additional work involved to upgrade an existing app with existing users, if you want to allow those users to switch to an encrypted database.
Amsheer
Updated on June 19, 2022Comments
-
Amsheer almost 2 years
Hi in my running app i already have an existing
sqlite
database. And now the problem is anybody can pull thesqlite database
from device and can be use it. Now i need toencrypt the sqlite file
. I found thatSQLCipher
is used to encrypt the sqlite database. But the real problem is i don't have any idea withSQLCipher
and don't know how it works. Try to use different projects. Nothing help. Please anyone tell me how to encrypt my sqlite database.Thanks in advance.
-
Amsheer almost 10 yearsThanks it works. Now i've an another issue i need to encrypt the old sqlite database to db using SQLCipher how to do it? I try something that is from sqlcipher.net/sqlcipher-api (Example 1). I don't know how o do that. Please help me.
-
CommonsWare almost 10 years@Amsheer: Please ask a separate Stack Overflow question for that.
-
Aritra Roy about 9 years@CommonsWare This is a perfect tutorial. How can I get SQLCIpher working on an already existing unencrypted database? What should be the best approach?
-
CommonsWare about 9 years@Aritra: To encrypt an existing database, use the
encrypt()
method from this source file. If you have additional questions in this area, please ask a fresh Stack Overflow question. -
Aritra Roy about 9 years@CommonsWare Thanks. Here is a new detailed question of my problems, stackoverflow.com/questions/29860873/… It would be awesome if you can help me on it.
-
Adolf Dsilva almost 9 yearsDude @CommonsWare don't forget to add SQLiteDatabase.loadLibs(this);
-
A-Sharabiani over 7 yearsDownloaded the
zip
file, there is noassets/
norlib/
folders. -
CommonsWare over 7 years@AliSharabiani: I don't know if they distribute the library that way anymore. It ships as an AAR for use with Gradle and Android Studio.