【问题标题】:How to decrypt SQLCipher database when sqlcipher_export failssqlcipher_export 失败时如何解密 SQLCipher 数据库
【发布时间】:2015-04-15 17:13:33
【问题描述】:

我正在尝试解密 SQLCipher 数据库以使用查看器应用程序对其进行查看,当我使用命令行工具执行in here 所说的操作时购买:

>sqlcipher encrypted.db
sqlite> pragma key = 'key';
sqlite> ATTACH DATABASE 'plaintext.db' AS plaintext KEY '';
sqlite> SELECT sqlcipher_export('plaintext');

我得到错误:

Error: no such collation sequence: COLLATION_NAME

而plaintext.db只有一张空表。

还有其他解密数据库的方法吗?

【问题讨论】:

    标签: sqlite encryption sqlcipher


    【解决方案1】:

    好吧,SQLite 具有此处概述的便捷备份功能:https://www.sqlite.org/backup.html

    您可以在命令行工具中通过.backup 特殊命令使用它(请参阅此处的帮助:https://www.sqlite.org/cli.html)。哪个在 sqlcipher 命令行工具中起作用,并因此生成未加密的数据库。

    以下是解密数据库的方法:

    >sqlcipher encrypted.db
    sqlite> pragma key = 'key';
    sqlite> .backup plaintext.db
    

    当然,您也可以通过加载数据库并使用在第一个链接中找到的备份 API 以编程方式执行此操作(滚动到“示例 2:正在运行的数据库的在线备份”部分),但我没有探索这个选项。

    【讨论】:

      【解决方案2】:

      您的数据库是在 Android 平台上生成的吗?如果是这样,它可能使用来自 ICU 的排序规则,该排序规则链接到 SQLCipher for Android。 SQLCipher 命令行工具的基本构建 instructions 不包括包含 ICU 的步骤。您可能会发现在 Android 设备上执行sqlcipher_export(…) 以利用 ICU 的存在更容易。

      【讨论】:

      • 它是在 Windows PC 上生成的,但对于在 Android 上做过的人来说,这是一个很好的建议,谢谢!
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 2017-04-13
      • 2013-01-13
      相关资源
      最近更新 更多