GIT 存储库、mingw32 和本操作方法编译了 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 上购买的静态版本。
有没有办法检查数据库被加密的算法?我想没有。
你们认为这是一个密码算法选择问题吗? 还是别的什么?
谢谢。
3.x 版本的 SQLCipher 可以在 2.x 数据库上运行,但是密钥派生长度从 4,000 增加到 64,000,这可能是您看到问题的原因。 在对数据库进行键控后,可以通过发出以下命令来执行 2.x 数据库文件的一次性升级:
PRAGMA cipher_migrate;
另一种方法是将kdf_iter
值向下调整为 4000。 有关这些选项的详细信息,请参阅涵盖 3.0.0 版本的博客文章。