我正在尝试加密我的核心数据。
正如另一个问题所示,我已阅读Nick Harris https://nickharris.wordpress.com/2010/07/14/core-data-and-enterprise-iphone-applications-protecting-your-data/的以下帖子。
首先在我的设备上,我在设置中打开了密码。
然后在我的appDelegate中,当我创建persistentStoreCoordinator时,我将以下属性NSFileProtectionComplete添加到我的核心数据存储文件中,根据我的理解,这意味着当设备被锁定密码时,我的核心数据应该加密或不可访问
NSDictionary *fileAttributes = [NSDictionary dictionaryWithObject:NSFileProtectionComplete forKey:NSFileProtectionKey];
if (![[NSFileManager defaultManager] setAttributes:fileAttributes ofItemAtPath:[storeURL path] error:&error]) {
NSLog(@"Cant encrypt");
}
但是,完成所有这些操作后,即使锁定了设备密码,我仍然可以使用iExplorer访问应用程序沙箱和包含.sqllite文件的文档文件夹,我可以将整个文件放到桌面上并完全查看未加密的。
我错过了什么吗?
答案 0 :(得分:3)
万一有人感兴趣,我想出为什么我愚蠢地认为苹果提供的加密在我的问题中提到不起作用.... 我在我的CoreData文件上打开加密并测试我只是试图使用iExplorer从我的设备中获取.sqlLite文件。它似乎正在访问该文件,因为.sqlLite文件是使用我的sqlLite浏览器打开的。但是它实际上并没有从设备中打开最新文件,而是打开了文件的缓存版本......