强制app停止后,无法使用原始密钥数据访问数据库

时间:2012-08-26 10:28:23

标签: android sqlite sqlcipher

我正在尝试使用行密钥数据以避免密钥派生(根据SQLCipher documentation):

this.myDb = SQLiteDatabase.openOrCreateDatabase(databaseFile, "", null);
this.myDb.rawExecSQL("PRAGMA key = \"x'2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99'\"");
Cursor myCursor = this.myDb.rawQuery(query, params);

当我强制停止应用程序时,无法访问数据。

如果不使用SQLCipher,则不会发生此行为。即使强制应用程序停止,数据库也是可读的。

我做错了什么?

提前致谢,

3 个答案:

答案 0 :(得分:0)

我的理解是除了应用程序之外无法访问数据库 - 这是为了防止其他应用访问不应该的数据

答案 1 :(得分:0)

您需要向我们展示更多代码,以便我们能够为您提供正确的答案。

您的电话等于

  

SQLiteDatabase.openDataBase(databaseFile.getPath(), “”,   CREATE_IF_NECESSARY,null);

当您强制关闭应用程序时,将恢复所有静态参数。 因此,从以前运行的应用程序中唯一可以影响的是您在数据库中保存的数据。 所以试着看看那个方向。

答案 2 :(得分:0)

对于那些面临同样问题的人,这里给出了一个解决方案:

https://github.com/sqlcipher/android-database-sqlcipher/issues/62#issuecomment-8090646