2017-02-18 41 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加密,然後解密需要被讀取時,卻會導致性能

虧損