我试图加密我的ios应用中的某些文件,以防止拥有越狱手机的人访问我应用的文件内容。
我正在使用Apple文档中的Encrypting Your App's Files
:
https://developer.apple.com/documentation/uikit/core_app/protecting_the_user_s_privacy/encrypting_your_app_s_files
所以我用这个来写文件
let data = "hello".data(using: .unicode)!
try! data.write(to: fileURL, options: .completeFileProtection)
根据文档,此选项意味着:
完整。只有在设备解锁时才能访问该文件。
所以在AppDelegate
方法的applicationDidEnterBackground
中,我添加了等待5秒的代码(为设备提供完全锁定的时间)并访问文件:
Thread.sleep(forTimeInterval: 5.0)
let data = try! Data(contentsOf: fileURL)
print(String(data: data, encoding: .unicode)!)
我在实际设备上尝试了这个,锁定了手机,等了5秒钟,数据读好了!我期待阅读失败。
我错过了什么?
PS:这种方法是否真的保证了越狱设备文件在文件系统中不可读?