加密sqlite数据库Android:

时间:2014-07-04 14:14:03

标签: android database sqlite encryption sqlcipher

您好,在我正在运行的应用中,我已经有了一个现有的sqlite数据库。现在问题是任何人都可以从设备中提取sqlite database并可以使用它。现在我需要encrypt the sqlite file。我发现SQLCipher用于加密sqlite数据库。但真正的问题是我对SQLCipher没有任何想法,也不知道它是如何运作的。尝试使用不同的项目。什么都没有帮助。请有人告诉我如何加密我的sqlite数据库。

提前致谢。

1 个答案:

答案 0 :(得分:19)

步骤#0:将代码添加到UI以提示用户输入密码。

步骤1:下载SQLCipher for Android ZIP file

步骤2:解压缩ZIP文件并导航到包含assets/libs/文件夹的目录。

步骤3:将assets/目录的内容复制到项目的assets/目录中。

步骤4:将libs/目录的内容复制到项目的libs/目录中。 Gradle / Android Studio用户还需要在顶级dependencies关闭中添加一行,以加载libs/的内容,如果您还没有。{/ p>

步骤5:将所有相关的android.database.*android.database.sqlite.*导入替换为其SQLCipher for Android等效项。如果您使用的IDE可以帮助您解决缺少的导入(例如,Eclipse中的 Ctrl - Shift - O ),那么最简单的方法就是做的是摆脱所有现有的android.database.*android.database.sqlite.*导入,让IDE帮助解决它们。在给出选择时选择net.sqlcipher导入。

步骤6:您现在将在打开数据库的几种方法上遇到编译器错误(例如getReadableDatabase()上的SQLiteOpenHelper),您现在需要传入从中收集的密码步骤#0中的用户。

这适用于以新数据库启动的新应用。如果您希望允许这些用户切换到加密数据库,还需要额外的工作来升级现有用户的现有应用程序。