ios - 在 iOS 上加密 SQLite 数据库文件

标签 ios sqlite core-data encryption

我的客户问我是否可以加密他的 iOS SQLite 文件。
我检查了这两个资源:

Encrypt & Decrypt Sqlite file (Using Core Data)
http://support.apple.com/kb/HT4175

如果我错了,请纠正我,该文件将被加密,因此没有人能够破解它(尽管我认为坚定的破解者是可能的)。

核心数据查询将照常运行,对吗?我的意思是没有性能损失,也没有不同的 API。

最佳答案

您提供的链接讨论了整个设备的加密存储;但是,如果目标是用户无法直接打开数据库文件,那么将无济于事,因为唯一可以防止的是在设备被盗时访问您的数据。它还依赖于用户进行设置,应用程序不能强制要求对设备存储进行加密。

基本上,想要加密存储的动机是什么?

编辑:

基于响应链,我认为在以下位置使用 SQLLite 的加密变体:

http://sqlcipher.net/

是一个很好的解决方案。这会在数据库内容到达存储之前对其进行加密,这非常棒。攻击者仍然可能找到您的代码中用于解密数据库的 key ,但是您可以添加的任何防御层都会有所帮助。我不认为你可以将它与 CoreData 一起使用(因为它构建在内置的 sqllite 库之上)但你可能可以将它与 FMDB 这样的包装器一起使用:

https://github.com/ccgus/fmdb

关于ios - 在 iOS 上加密 SQLite 数据库文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4753433/

相关文章:

ios - 如何在不进行身份验证的情况下将核心数据持久化到云端

ios - UIImageView+AFNetworking 未从服务器检索最新图像

iphone - iOS:iOS 4.3 和 5.0 之间的不同 addSubview 行为

SQL 从数据库中删除前导连字符 (-) 并删除连续的空格

Swift5 CoreStore CoreStore.fetchAll() 抛出错误

objective-c - NSFetchRequest 返回错误的实体类型

ios - 将共享文档文件夹中的文档加载到WKWebView中

java - 从 SQLite 表中获取随机值

ruby-on-rails - sqlite3 gem 安装失败

iphone - CoreData实体继承