我有一个加密的 sqlite 数据库及其密钥。 (由android程序生成)。 但是,当我在命令行中打开数据库时,我无法读取数据库。 命令行工具的安装方式为:
brew install sqlcipher
我通过以下方式打开数据库:
sqlcipher EnDB.db
>pragma key="6b74fcd";
>select * from bizinfo;
它一直告诉我“错误:文件已加密或不是数据库”
但是,如果我使用 gui 应用程序 sqlite 数据库浏览器(这是一个 Windows 程序,我在 wine 中运行它)打开数据库文件。弹出一个窗口让我输入密钥,以 6b74fcd 为密钥成功读取数据库。
由于我想将来自动处理数据库,所以我不能依赖GUI。 你知道为什么命令行不起作用吗?
已经解决了!
之后
pragma key="6b74fcd";
称之为:
pragma cipher_use_hmac=off;
然后一切都会变得很顺利。 看来数据库是1.x数据库。
由于我不得不经历类似问题的一些麻烦,这对我的案例有帮助。
在终端中通过
打开数据库后sqlcipher mydatabase.db
我确保了兼容性
PRAGMA cipher_default_compatibility = 1;
然后我提供了钥匙
PRAGMA key='theKey';
现在,我可以使用如下 SQL 语句
SELECT * FROM myTable;
显然,请确保将“mydatabase.db”、“theKey”和“myTable”等内容替换为您个人的数据库名称、键和表名称。