2017-02-18 54 views
0

我有一个应用程序,下载几个pdf和图像,并将它们保存在Documents目录中。我需要这些文件受到所有试图通过iExplorer等工具访问它们的人的保护。我发现iOS安全指南,并启用了Data Protection功能。然后我试图以这种方式创建一个txt文件:如何使用加密保护Documents目录中的数据?

let documentsPath = NSSearchPathForDirectoriesInDomains(FileManager.SearchPathDirectory.documentDirectory, FileManager.SearchPathDomainMask.userDomainMask, true).first! 
let filePath = documentsPath + "/hello.txt" 

FileManager.default.createFile(atPath: filePath, contents: Data.init(base64Encoded: "HELLOOOOOOOO"), attributes: [kCFURLFileProtectionKey as String: FileProtectionType.complete]) 

于是,我试图用IEXPLORER访问txt文件,我能做到这一点对于任何其他非保护的文件。我确实已将我的iPhone解锁并锁定,等待5分钟后。这些文件在那里没有任何问题。我真的需要知道是否有办法让他们无法访问,至少在设备被锁定时。

我在想的另一个解决方案是使用自定义算法对Documents文件夹中的文件进行加密,但这样在发生大文件的情况下,我们会失去打开文件的速度,因为每次我们需要解密它,需要大量的时间,这取决于文件本身的大小。

对此提出建议?

回答

0

如果你想要写一个文件,是无法进入解锁时,你必须写如下:

let filePath = "path/to/place" 
let bar = "HII" 
let fileAttr = [NSFileProtectionKey : NSFileProtectionComplete] 
fileManager.createFile(atPath: filePath, contents: bar, attributes: fileAttr) 

它仍然是可以访问的时候解锁虽然。如果人们真的想要找到这些文件,他们会尝试很多种方式来访问它。

注:此代码是没有测试

如果您想拥有完整的保护,你可以用AES加密,然后解密需要被读取时,却会导致性能

亏损