4

我正在尝试加密我的核心数据。

正如另一个问题中所建议的那样,我已经阅读了尼克哈里斯的以下帖子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 文件的文档文件夹,并且我可以将整个文件放到我的桌面上,并以完全未加密的方式查看它。

我错过了什么吗?

4

1 回答 1

3

以防万一有人感兴趣,我想通了为什么我愚蠢地认为我的问题中提到的苹果提供的加密不起作用......我正在打开我的 CoreData 文件的加密并测试我只是想抓住使用 iExplorer 从我的设备获取 .sqlLite 文件。它似乎正在访问该文件,因为 .sqlLite 文件是使用我的 sqlLite 浏览器打开的。但是,它实际上并没有从设备打开最新文件,而是打开了文件的缓存版本......

于 2012-12-11T10:57:15.180 回答