【发布时间】:2016-09-04 07:35:43
【问题描述】:
我正在尝试为我的核心数据文件启用数据保护。这就是我所做的。
- 项目设置启用了数据保护功能。
-
修改持久存储协调器getter
let coordinator = NSPersistentStoreCoordinator(managedObjectModel: self.managedObjectModel) let url = self.applicationDocumentsDirectory.URLByAppendingPathComponent("SingleViewCoreData.sqlite") var failureReason = "There was an error creating or loading the application's saved data." do { try coordinator.addPersistentStoreWithType(NSSQLiteStoreType, configuration: nil, URL: url, options: [NSSQLitePragmasOption : ["journal_mode" : "DELETE"], NSPersistentStoreFileProtectionKey : NSFileProtectionComplete]) } 运行代码并在设备上安装应用程序。
- 下载app容器并打开包内容,可以看到.sqlite文件
- 现在锁定设备
- 保留 10 秒,然后再次为同一个应用下载应用容器。 7.打开包内容,还是可以看到包内容和sqlite文件:(
如果有帮助的话,我正在使用免费的配置文件。
我在这里犯了什么错误?为什么这个 .sqlite 文件没有加密?
请帮忙。提前致谢。
【问题讨论】:
-
可能重复:stackoverflow.com/a/23203728/3400991,要加密持久存储,应该使用 SQLCipher
-
@shobhakar-tiwari :我不明白这是怎么重复的! 1. 我的答案与您在链接中给出的答案完全相同,但我声称它没有加密,这意味着我编写的代码不起作用!!!! 2.您链接中发布的答案尚未被接受,因此不太确定它是否真的有效!!!。我发现 100 个这样的链接具有相同的代码,它们既不被接受也不工作。
-
使用 SqlCipher ,这就是为什么它写成可能重复不完全重复
-
@shobhakar-tiwari : 伙计,你错过了一点! SqlCipher 是 sqlite 的开源扩展,用于加密整个 sqlite 文件。我不是在询问加密我的核心数据的方法。问题很具体!!我想利用 NSFileProtection 来利用苹果从 iPhone 3gs 开始提供的数据保护功能,通过将文件放在格式化的磁盘分区中来加密和解密文件。所以使用 SqlCipher 无论如何都超出了这里的范围:)
-
然后也提到这个问题,否则你似乎想要保护你的数据的方法