SQLCipher v3.2.0无法打开使用SQLCipher v2.1.1创建的数据库

时间:2014-12-17 16:32:35

标签: windows dll sqlcipher

我使用SQLCipher GIT存储库mingw32和此how-to编译了SQLCipher v3.2.0。 我成功地获得了一个可以创建加密和未加密数据库的sqlite3.dll。

但是当我尝试打开使用SQLCipher v2.1.1创建的加密数据库时,无法打开数据库。我还尝试使用SQLCipher v2.1.1打开使用SQLCipher v3.2.0创建的数据库,但它也失败了。

我猜这个问题是关于SQLCipher v3.2.0使用的默认密码算法和SQLCipher v2.1.1使用的默认密码算法。

使用GIT存储库中提供的源文件,我检查了SQLCipher v2.1.1使用的默认密码算法,该算法是使用64(字节/位)密钥的AES-256-CBC。 SQLCipher v3.2.0似乎使用相同的默认算法。

SQLCipher v2.1.1是两年前在zetetic.net上购买的静态版本。

有没有办法检查数据库加密的算法是什么?我猜不是。

你们认为这是一个密码算法选择问题吗?或其他什么?

感谢。

1 个答案:

答案 0 :(得分:2)

3.x版本的SQLCipher可以在2.x数据库上运行,但密钥派生长度从4,000增加到64,000,这可能是您遇到问题的原因。您可以在键入数据库后通过发出以下命令来执行2.x数据库文件的一次性升级:

PRAGMA cipher_migrate;

另一种方法是将kdf_iter值调整为4000.有关这些选项的更多信息,请参阅有关3.0.0版本的blog post