3

如您所知,我们可以使用 sqlcipher 来加密数据库,我在一个 android 项目中使用它。出于某种原因,我不想再使用它了。

通过使用 sqlcipher_export 转换数据库。

所以我的问题是

  1. 有没有一种好方法让我检查数据库是否加密,从而决定是否需要解密。

2、如果出现意外情况(迁移过程中关机),我该怎么办?

4

2 回答 2

4

直接检查数据库文件的前 16 个字节,如果它们等于字符串 "SQLite format 3\000" 则该文件没有加密,是一个标准的 SQLite 数据库。

如果在 sqlcipher_export 期间发生某些事情并发生崩溃,原始数据库将保持不变。只需在后续启动时再次运行导出。

于 2013-06-27T16:51:59.797 回答
1

将@StephenLombardos 字符串“SQLite 格式 3\000”放入UTF-8 字节计数器返回为19 bytes

因此,虽然他的回答是正确的,但需要稍作修改。

我会读取前17 个字节并检查它们是否等于“SQLite 格式 3\0”

如果上述陈述为真,那么您的 db 文件未加密

如果该语句为 false,则您的 db 文件已加密

于 2018-02-06T15:03:30.007 回答