【发布时间】:2023-03-06 19:21:01
【问题描述】:
众所周知,我们可以使用 sqlcipher 来加密数据库,我在一个 android 项目中使用它。出于某种原因,我不想再使用它了。
通过使用 sqlcipher_export 转换数据库。
所以我的问题是
- 有没有好办法让我检查数据库是否加密,从而决定是否需要解密。
2、如果出现意外情况(迁移过程中关机),我该怎么办?
【问题讨论】:
众所周知,我们可以使用 sqlcipher 来加密数据库,我在一个 android 项目中使用它。出于某种原因,我不想再使用它了。
通过使用 sqlcipher_export 转换数据库。
所以我的问题是
2、如果出现意外情况(迁移过程中关机),我该怎么办?
【问题讨论】:
直接查看数据库文件的前16个字节,如果等于字符串“SQLite format 3\000”则该文件未加密,为标准SQLite数据库。
如果在 sqlcipher_export 期间发生某些事情并发生崩溃,原始数据库将保持不变。只需在后续启动时再次运行导出即可。
【讨论】:
将@StephenLombardos 字符串“SQLite format 3\000”放入UTF-8 byte counter 会返回为19 bytes
因此,虽然他的回答是正确的,但需要稍作修改。
我会读取前 17 个字节并检查它们是否等于 "SQLite format 3\0"
如果上述陈述为真,那么您的 db 文件是未加密
如果语句为假,那么您的数据库文件是加密的
【讨论】: