我使用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上购买的静态版本。
有没有办法检查数据库加密的算法是什么?我猜不是。
你们认为这是一个密码算法选择问题吗?或其他什么?
感谢。
答案 0 :(得分:2)
3.x版本的SQLCipher可以在2.x数据库上运行,但密钥派生长度从4,000增加到64,000,这可能是您遇到问题的原因。您可以在键入数据库后通过发出以下命令来执行2.x数据库文件的一次性升级:
PRAGMA cipher_migrate;
另一种方法是将kdf_iter
值调整为4000.有关这些选项的更多信息,请参阅有关3.0.0版本的blog post。