2017-02-18 22 views
0

У меня есть приложение, которое загружает несколько PDF-файлов и изображений и сохраняет их в каталоге Documents. Мне нужны эти файлы для защиты всех, кто пытается получить к ним доступ с помощью таких инструментов, как iExplorer. Я нашел руководство по безопасности iOS, и я включил функцию Data Protection. Затем я попытался создать текстовый файл следующим образом:Как защитить данные в каталоге документов с помощью шифрования?

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 для доступа к текстовому файлу, и я был в состоянии сделать это, как для любого другого, не защищенного файла. У меня был iPhone разблокирован, а также заблокирован и после ожидания до 5 минут. Файлы были доступны без каких-либо проблем. Мне действительно нужно знать, есть ли способ сделать их недоступными, по крайней мере, когда устройство заблокировано.

Другое решение, о котором я думал, это зашифровать файлы в папке «Документы» с помощью специального алгоритма, но таким образом в случае больших файлов мы теряем скорость при открытии файла, потому что каждый раз, когда нам нужно расшифровать его, и это требуется количество времени, которое зависит от размера самого файла.

Предложения?

ответ

0

Если вы хотите, чтобы написать файл, который недоступен, когда разблокирован, вы должны написать следующее:

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

Это все еще доступен, когда разблокирован хотя. Если люди действительно хотят найти файлы, они попробуют множество способов доступа к нему.

Примечание: Этот код не тестировался

Если вы хотите иметь полную защиту, вы можете зашифровать с AES, а затем расшифровать, когда это необходимо для чтения, но это приведет к потере производительности

 Смежные вопросы

  • Нет связанных вопросов^_^