1

我在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

如何在 android 上使用 sqlcipher 读取以前在 pc 上创建的加密数据库?

4

1 回答 1

0

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

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