如果您正在使用SQLCipher核心3.7 .17,這是對應於SQLCipher的v2.2.1
標記的SQLite版本字符串,它可以與適用於Android 2.2.0的SQLCipher正常工作。要驗證您的初始加密是否正常工作,請按照sqlcipher_export
過程執行以下操作:
$> ./sqlcipher encrypted.db
sqlite> PRAGMA key = 'testkey';
sqlite> select * from sqlite_master;
如果你從sqlite_master
表的查詢顯示的結果,我們應該排除的應用集成的問題,你可以試試SQLCipher內運行數據庫爲Android test suite?請注意,測試套件針對Android庫的最新SQLCipher,目前爲3.0.2,並且將需要使用不同的密鑰派生長度; 4000是SQLCipher 2.x中的默認值。你會希望你的數據庫文件複製到assets
目錄,然後嘗試使用下面的示例中打開它:
SQLiteDatabaseHook hook = new SQLiteDatabaseHook(){
public void preKey(SQLiteDatabase database){}
public void postKey(SQLiteDatabase database){
database.execSQL("PRAGMA kdf_iter = 4000;");
};
ZeteticApplication.getInstance().extractAssetToDatabaseDirectory("encrypted.db");
File databaseFile = ZeteticApplication.getInstance().getDatabasePath("encrypted.db");
SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databaseFile, "testkey",
null, hook);
從那裏,你應該能夠查詢數據庫。如果您有特別的問題,SQLCipher Mailing List也是一個很好的開始。
我無法幫助你解決問題,如果你發佈了一些代碼,它可以幫助那些可以幫助你的人。 –
恩,有SQLCipher 3.7.17 AFAIK。最新的是3.0.2。 – CommonsWare