【问题标题】:SQLCipher - Sharing a Windows-created database with an Android applicationSQLCipher - 与 Android 应用程序共享 Windows 创建的数据库
【发布时间】:2012-03-16 18:31:45
【问题描述】:

我在Windows上编译了sqlite3命令行shell的SQLCipher版本,成功创建了一个加密数据库。然后我想看看我是否可以在 Android 应用程序中使用这个预制数据库。我将数据库复制到 Android 应用程序并尝试调用 SQLiteDatabase.openDatabase 并传入我在 Windows 上使用的密钥,但得到以下信息:

“原因:info.guardianproject.database.sqlcipher.SQLiteException:文件已加密或不是数据库”

有没有人尝试过先在 Windows 上创建一个加密数据库,然后将该数据库与他们的应用程序打包在一起?如果是这样,在 Android 应用中键入和打开数据库的过程是什么?

我已阅读以下链接,但没有找到解决方案:

https://groups.google.com/group/sqlcipher/browse_thread/thread/d2694975e8f3809f

How to read an encrypted database created previously on pc with sqlcipher on android?

【问题讨论】:

    标签: android sqlite sqlcipher


    【解决方案1】:

    如果您使用 SQLCipher 2 命令行程序创建数据库,您应该:

    1. 使用适用于 Android 2.0.0 的 SQLCipher (https://github.com/sqlcipher/android-database-sqlcipher/downloads);或
    2. 当也使用命令行创建数据库时,在为新数据库设置密钥以禁用 HMAC 后立即运行 PRAGMA cipher_use_hmac = OFF。这将创建一个与 SQLCipher for Andodi 1.x 一起使用的 1.1.x 兼容数据库

    【讨论】:

    • 我遵循了选项 1,这让我在 Windows 上构建和加密数据库,然后在 Android 上解密和交换。我之前一直在使用旧版本。谢谢。
    • 嗨@stephen,我正在使用最新版本的sqlcipher 3.7 和android 应用程序兼容到android 2.1。我在我的 Mac 上加密了我已经存在的数据库并尝试在 android 应用程序中对其进行解密,但它找不到任何表,但我能够创建新表并向它们添加行。解密同一个数据库会显示以前存在的表。有什么建议吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多