我正在尝试解密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只有一个空表。
有没有其他方法可以解密数据库?
答案 0 :(得分:0)
嗯,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:正在运行的数据库的在线备份"部分)以编程方式执行此操作,但是我没有探索这个选项。
答案 1 :(得分:0)
您是否在Android平台上生成了数据库?如果是这样,它可能正在使用来自ICU的排序规则,该排序规则链接到Android的SQLCipher。 SQLCipher命令行工具的基本构建instructions不包括包含ICU的步骤。您可能会发现在Android设备上执行sqlcipher_export(…)
可以更轻松地利用ICU的存在。