【问题标题】:SQLCipher v3.2.0 can't open databases created with SQLCipher v2.1.1SQLCipher v3.2.0 无法打开使用 SQLCipher v2.1.1 创建的数据库
【发布时间】:2014-12-18 06:41:24
【问题描述】:

我已经使用 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 购买的静态版本。

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

你们认为这是一个密码算法选择问题吗?还是别的什么?

谢谢。

【问题讨论】:

    标签: windows dll sqlcipher


    【解决方案1】:

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

    PRAGMA cipher_migrate;

    另一种方法是将kdf_iter 的值调整为4000。有关这些选项的更多信息,请访问涵盖3.0.0 版本的blog post

    【讨论】:

    • 我会看看这个。我想使用更大的密钥派生长度可以获得更强的加密?
    • 使用更大的迭代长度意味着根据提供的密码计算密钥需要更长的时间,这在减缓暴力攻击时特别有用。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 2017-06-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多