我已经使用sqlcipher 2年了。昨天我已升级到3.0.1版,并尝试编译包含arm64的sqlcipher。
如果我安装我的应用程序的新版本,我可以使用新的密码库,没有任何问题。 但是当我尝试使用sqlcipher 2.0制作的数据库升级我之前的版本时,我收到错误26。
似乎新密码无法解密我的数据库。
此外,我尝试编译没有arm64支持。同样的问题。
答案 0 :(得分:2)
我使用
解决了我的问题PRAGMA cipher_migrate
有助于从旧的DB结构迁移到sqlcipher 3.0(Details)。
必须在设置密钥后立即执行。
如果您想使用新的sqlcipher 3.0使用
读取旧数据库(1.X / 2.X)PRAGMA kdf_iter = 4000
为kdf_iter设置旧值。现在它等于64,000(Details)
就lib sqlite而言,db连接如下所示:
int errorCode = SQLITE_ERROR;
sqlite3 *database = NULL;
errorCode = sqlite3_open_v2(path, &database, SQLITE_OPEN_READWRITE, NULL);
if (errorCode == SQLITE_OK) {
errorCode = sqlite3_key(database, key, (int)strlen(key));
}
if (errorCode == SQLITE_OK) {
errorCode = sqlite3_exec(database, "PRAGMA kdf_iter = 4000", NULL, NULL, NULL);
}