【问题标题】:encrypt sqlite database Android:加密sqlite数据库Android:
【发布时间】:2014-08-25 21:46:16
【问题描述】:

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

提前致谢。

【问题讨论】:

    标签: android database sqlite encryption sqlcipher


    【解决方案1】:

    第 0 步:将代码添加到您的 UI 以提示用户输入密码。

    第 1 步:下载SQLCipher for Android ZIP file

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

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

    步骤#4:将libs/ 目录的内容复制到项目的libs/ 目录中。 Gradle/Android Studio 用户还需要在顶层 dependencies 闭包中添加一行以加载 libs/ 的内容(如果您还没有的话)。

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

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

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

    【讨论】:

    • 谢谢它的工作。现在我有另一个问题,我需要使用 SQLCipher 将旧的 sqlite 数据库加密到 db 怎么做?我尝试了来自sqlcipher.net/sqlcipher-api 的东西(示例1)。我不知道该怎么做。请帮帮我。
    • @Amsheer:请为此提出一个单独的 Stack Overflow 问题。
    • @Aritra:要加密现有数据库,请使用来自this source fileencrypt() 方法。如果您在这方面还有其他问题,请提出新的 Stack Overflow 问题。
    • Dude @CommonsWare 不要忘记添加 SQLiteDatabase.loadLibs(this);
    • @AliSharabiani:我不知道他们是否会再以这种方式分发库。它作为 AAR 提供,可与 Gradle 和 Android Studio 一起使用。
    猜你喜欢
    • 1970-01-01
    • 2015-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-17
    相关资源
    最近更新 更多