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