objective-c - 如何加密sqlite数据库核心数据?

标签 objective-c cocoa sqlite core-data encryption

我正在创建一个 cocoa 基核心数据应用程序。我想保护 sqlite 数据库,防止从应用程序中读取它。怎么办?

最佳答案

您可以使用密码算法来加密数据库,并在应用程序中使用数据库时进行解密。 CommonCrypto 或 SecurityTransform 可能是您的选择。看看Cryptographic Services Guide Apple Dev-Docs 。 所需的凭据可以安全地存储在 OS X 钥匙串(keychain)中。 因此,用户可以在每个应用程序启动/登录时解密数据库,并在离开时或其他情况下对其进行加密。

另一种方法可能是对凭据进行硬编码(也许不是一个好主意,取决于您希望应用程序使用的安全标准)并在每次读/写数据库时动态进行加密/解密,以便数据库其本身未加密,但其中的记录已加密。如果您的应用程序崩溃,这可能会更具容错性。

因此,没有“正确”的方法来完成任务,这取决于您想要存档的内容以及数据的安全性。 但无论您做什么,都不要在 NSUserDefaults 中保存任何凭据,这绝对不安全。
这就像有一个安全的箱子,而 key 就位于箱子上。

关于objective-c - 如何加密sqlite数据库核心数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22071280/

相关文章:

iphone - 在 iPhone 应用程序升级上部署 sqlite DB

database - 值得为重复~两次的数据库值创建一个唯一表吗?

android - 房间 - 选择带有 IN 条件的查询?

ios - 无法获取 Google Maps iOS SDK 的我的位置点

ios - Swift 编译器错误 - 无法导入桥接头

cocoa - NSFontManager addFontTrait 如何更改 UI 元素上的实际字体

objective-c - 为什么我应该为我自己的类添加前缀?

带有 RESTful Web 服务的 Objective-C NSURLConnection,错误处理

objective-c - "Invalid Provisioning Profile... [Missing code-signing certificate.]"用于 OS X Mavericks 中全新的 Vanilla Mac App

objective-c - 如何使用 Objective C 将 iwork 文档转换为 pdf