我正在使用 SqlCipher 来加密数据库。为了测试我的approch,我使用了两个步骤:
使用密钥(ofcourse !!!)创建一个DB(在SqlCipher中),通过检查
打开它
net.sqlcipher.database.SQLiteDatabase database = net.sqlcipher.database.SQLiteDatabase.
openOrCreateDatabase(databaseFile, dataBasePassword, null);
if(database.isOpen());
而不是关闭database
。
net.sqlcipher.database.SQLiteDatabase database = net.sqlcipher.database.SQLiteDatabase.
openOrCreateDatabase(databaseFile, password, null);
if(database.isOpen())
问题:
密码1:2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99
密码2:foo123
当我尝试执行第2步(打开数据库)时,我收到错误
net.sqlcipher.database.SQLiteException:文件已加密或不是 数据库
我知道这个问题已被提出,但没有任何有利的答案。所以任何帮助请!!!!
答案 0 :(得分:0)
而不是使用:
net.sqlcipher.database.SQLiteDatabase database = net.sqlcipher.database.SQLiteDatabase.
openOrCreateDatabase(databaseFile, dataBasePassword, null,hook);
` 使用:
SQLiteDatabaseHook hook = new SQLiteDatabaseHook(){
public void preKey(SQLiteDatabase database){
database.rawExecSQL("PRAGMA kdf_iter = 4000");
}
public void postKey(SQLiteDatabase database){}
};
net.sqlcipher.database.SQLiteDatabase database = net.sqlcipher.database.SQLiteDatabase.
openOrCreateDatabase(databaseFile, dataBasePassword, null,hook);
像魅力一样工作