2012-08-26 35 views
0

我想,以避免密钥派生使用行密钥数据访问数据库(据SQLCipher documentation):无法使用强制应用程序后,原始密钥数据停止

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

当我逼应用程序停止,访问数据变得不可能。

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

我我做错了什么?

由于提前,

+0

这似乎是同样的问题问GitHub的问题页面[这里](HTTPS上:// github上。 com/sqlcipher/android-database-sqlcipher/issues/62),我已经评论过那里,要求提供更多信息。 –

+0

有关此问题的其他信息:-) – ridan

回答

0

我的理解是,该数据库是不是除了由应用访问 - 这是为了防止访问他们不应该

+0

可以直接指定密钥以避开密钥派生。有了这个,即使在重新启动手机或强制应用程序停止后,数据库仍然可读。 – ridan

0

您需要向我们展示更多的代码数据的其他应用所以我们能够给你正确的答案。

您的来电等于

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

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

+0

我使用Android的Cordova插件来访问SQLite数据库: [link](https://github.com/chbrody/Cordova-SQLitePlugin/blob/master/Android/src/com/phonegap/plugin/sqlitePlugin/ SQLitePlugin.java) 我对SQLCipher [link](http://mobileapphelp.blogspot.com/2012/08/trying-sqlcipher-with-cordova.html)做了一些改动, – ridan

相关问题