加密通过 Core Data 访问的 Sqlite 数据库

Posted

技术标签:

【中文标题】加密通过 Core Data 访问的 Sqlite 数据库【英文标题】:Encrypting a Sqlite database accessed through Core Data 【发布时间】:2013-06-04 11:04:09 【问题描述】:

我需要加密我正在开发的 ios 应用程序的 sqlite 数据库。我设法用 SQLCipher 库做到了这一点。在我的应用程序中,这个数据库是通过 Core Data 查询的。我不明白是否可以告诉 Core Data 使用数据库的未加密版本(通过 SQLCipher 获得)。是否可以? 如果没有,我该怎么办?如何加密数据库并告诉 Core Data 解密它并使用未加密的信息?我阅读了许多其他帖子,但它们并没有多大用处。 注意:sqlite 数据库位于 iOS 应用程序的文档文件夹中,我的目的是拒绝任何用户访问数据。 谢谢

【问题讨论】:

【参考方案1】:

为了将 Core Data 与 SQLCipher 一起使用,您需要查看 encrypted-core-data 项目。

【讨论】:

是的,我检查并尝试将它与我的应用程序集成,但我不知道如何使它工作。我按照您链接的页面中的教程进行操作,我将 EncryptedStore 连接到我的数据库,但是在从协调器获得的 NSManagedObjectContext 上执行 NSFetchRequests 总是返回 0 个结果。

以上是关于加密通过 Core Data 访问的 Sqlite 数据库的主要内容,如果未能解决你的问题,请参考以下文章

在后台使用 Core Data 加密

SQLCipher、encrypted-core-data 和 iOS - 两个 .sqlite 文件正常吗?

在同一个数据库上同时使用 core-data 和基于 sqlite c 的 api

Core Data SQLite 存储在更新后变为只读

EF sqlite3报错 "System.Data.Entity.Core.EntityException: 在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常。

从 Core Data 中删除和添加存储