gpt4 book ai didi

android - sqlcipher 'open' 性能与 cordova 和 Cordova-SQLitePlugin

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:01:40 28 4
gpt4 key购买 nike

我有一个相对复杂的 sqlcipher 数据库(27 个表)但条目很少(每个表在 50-200 个条目之间)。当我运行 SELECT 语句(与相应 View 相同)、连接 3 个表、执行几个“LIKE”(使用 EXPLAIN 优化)时,桌面客户端 CPU(使用 sqlcipher)需要 3 毫秒 用于查询。

但是在 Android 上使用 Cordova-SQLitePlugin 执行相同的查询需要 将近 1900 毫秒 - 因为打开数据库 花费大约 >1800 毫秒,显然在每次页面加载后都会重复。

查询是这样发出的:

var db = window.sqlitePlugin.openDatabase({name: "myDatabase", key: "mySecret", bgType: 1});
db.transaction(function(transaction) {
transaction.executeSql(query, [],function(transaction, result) {
callback(result);
}, null);
},null,null);

有什么我可以做的吗?在此先感谢您提供任何提示和线索...

干杯克里斯

最佳答案

SQLCipher 打开数据库的性能故意很慢。 SQLCipher 使用 key PBKDF2 进行 key 推导(即数千次 SHA1 操作)以防御暴力破解和字典攻击。请看http://sqlcipher.net/design获取更多信息。

最好的选择是缓存数据库连接,这样它就可以多次使用,而不必在每个屏幕上打开和键入数据库。如果可能,最好在启动期间打开一次数据库。对同一数据库句柄的后续访问不会触发 key 派生,因此性能会非常快。

如果这不可能,另一个选项是禁用或削弱 key 派生。这将导致 SQLCipher 在派生 key 时使用较少轮次的 PBKDF2。虽然这将使数据库打开得更快,但从安全角度来看,它明显较弱。因此一般不推荐。也就是说,这里是关于如何减少 KDF 迭代的信息:

http://sqlcipher.net/sqlcipher-api/#kdf_iter

关于android - sqlcipher 'open' 性能与 cordova 和 Cordova-SQLitePlugin,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21669431/

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