Android中如何加密SQLite数据库:

6
在我的运行应用程序中,我已经有一个现有的sqlite数据库。现在的问题是,任何人都可以从设备上拉取sqlite数据库并使用它。现在我需要加密sqlite文件。我发现SQLCipher用于加密sqlite数据库。但真正的问题是我不知道SQLCipher是什么以及它如何工作。尝试使用不同的项目,但没有帮助。请有人告诉我如何加密我的sqlite数据库。
提前致谢。
1个回答

19

步骤#0:在您的用户界面中添加代码以提示用户输入密码短语。

步骤#1:下载SQLCipher for Android ZIP文件

步骤#2:解压ZIP文件并导航到具有assets/libs/文件夹的目录。

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

步骤#4:将libs/目录的内容复制到您项目的libs/目录中。如果您还没有一个顶级dependencies闭包,则Gradle/Android Studio用户还需要添加一行来加载libs/的内容。

步骤#5:用它们的SQLCipher for Android等效物替换所有相关的android.database.*android.database.sqlite.*导入。如果您正在使用可以帮助您解决丢失导入的IDE(例如在Eclipse中按Ctrl + Shift + O),最简单的方法是摆脱所有现有的android.database.*android.database.sqlite.*导入,然后让IDE帮助解决它们。在选择时,请选择net.sqlcipher导入。

步骤#6:现在,您将看到一些方法上的编译器错误,其中您打开数据库(例如,在SQLiteOpenHelper上调用getReadableDatabase()),您现在需要传递从步骤#0收集的密码短语。

这将适用于新启动具有新数据库的新应用程序。如果要允许这些用户切换到加密数据库,则还需要进行其他工作,以升级具有现有用户的现有应用程序。


@CommonsWare 这是一个完美的教程。我如何在已经存在的未加密数据库上使用SQLCipher?应该采取什么最好的方法? - Aritra Roy
1
@Aritra:要加密现有数据库,请使用此源文件中的encrypt()方法。如果您在这个领域有其他问题,请提出一个新的Stack Overflow问题。 - CommonsWare
@CommonsWare 谢谢。这里是我问题的详细描述,http://stackoverflow.com/questions/29860873/using-sqlcipher-with-android 如果您能帮助我解决它,那就太棒了。 - Aritra Roy
3
兄弟,@CommonsWare 别忘了添加 SQLiteDatabase.loadLibs(this); - Adolf Dsilva
1
@AliSharabiani:我不知道他们是否还以那种方式分发库。现在它作为AAR随Gradle和Android Studio一起发布。 - CommonsWare
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接