gpt4 book ai didi

Android SQLcipher PRAGMA 问题

转载 作者:行者123 更新时间:2023-11-29 18:05:42 25 4
gpt4 key购买 nike

大家好,我在使用 SQLcipher db for android 时遇到了一些问题该文档描述性不强,所以我无法理解。

我正在尝试修改 sqlcipher for android 的默认迭代次数,我正在使用 sqlcipher 编辑作为演示应用程序提供的 notecipher 应用程序,并希望将 kdf_iter 增加到即 5000

通过覆盖数据库助手中的 getWritableDatabase() 方法,我在使用密码打开文件后立即输入 pragma 值。

我可以打开并初始化数据库,但如果调用 database.close() 则无法重新打开数据库。

每当我在下一个 open() 调用中关闭数据库时,我都会得到:

I/Database(807): sqlite returned: error code = 26, msg = file is encrypted or is not a database
E/Database(807): CREATE TABLE android_metadata failed
E/Database(807): Failed to setLocale() when constructing, closing the database
E/Database(807): info.guardianproject.database.sqlcipher.SQLiteException: file is encrypted or is not a database

最佳答案

您需要使用 SQLiteDatabaseHook 对象来调用 kdf_iter pragma。这将确保在打开数据库之后但在使用之前立即调用 pragma。

SQLiteDatabaseHook hook = new SQLiteDatabaseHook(){
public void preKey(SQLiteDatabase database){
database.rawExecSQL("PRAGMA kdf_iter = 5000");
}
public void postKey(SQLiteDatabase database){}
}

SQLiteDatabase database = SQLiteDatabase.openOrCreateDatabase(databasePath, password, null, hook);

关于Android SQLcipher PRAGMA 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13537073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com