2013-01-22 57 views
4

我需要在文檔目錄中保護我的數據,因此我使用了Apple Data Protection APIApple AssetiPhone中的數據保護API不加密

  1. 我在設置應用程序中啓用了數據保護。設置>通用>密碼鎖定在
  2. 我寫使用NSDataProtectionKey

    [data writeToFile:imagePath options:NSDataWritingFileProtectionComplete error:nil]; 
    
  3. 文件被成功寫入

  4. 我得到的文件屬性

    [[NSFileManager defaultManager] attributesOfItemAtPath:fullPath 
                    error:NULL]; 
    
  5. 文件它返回這樣的屬性,你可以看到NSFileProtectionKey是NSFileProtectionComplete

    NSFileCreationDate = "2013-01-22 06:10:48 +0000"; 
    NSFileExtensionHidden = 0; 
    NSFileGroupOwnerAccountID = 501; 
    NSFileGroupOwnerAccountName = mobile; 
    NSFileModificationDate = "2013-01-22 06:10:48 +0000"; 
    NSFileOwnerAccountID = 501; 
    NSFileOwnerAccountName = mobile; 
    NSFilePosixPermissions = 420; 
    NSFileProtectionKey = NSFileProtectionComplete; 
    NSFileReferenceCount = 1; 
    NSFileSize = 8964; 
    NSFileSystemFileNumber = 335997; 
    NSFileSystemNumber = 16777218; 
    NSFileType = NSFileTypeRegular; 
    

我相信,我已經成功地寫入了文件,我成功讀取該文件。但是,當我在iExplorer(Mac版的外部iOS設備讀取器應用程序)中打開此設備時,它會向我顯示未經加密而寫入的文件。

沒有加密意味着我寫了一個圖像文件。但是我可以在iExplorer中查看該圖像(在文檔目錄中)。但我的目的是加密。因爲我不希望用戶看到這些文件。我知道其他加密AES算法。但想知道爲什麼Data Protection API不起作用。

注:我使用記錄在設備

+0

與iPhone6 iOS9.3.1一樣,它的工作原理與您所期待的完全相同(圖像文件不可見),唯一的一點是我在訪問iExplorer時鎖定設備!因爲'NSFileProtectionComplete'僅在設備鎖定後約10秒才起作用。 – D4ttatraya

回答

10

的iPad2的iOS 6.0.1和 日誌,但想知道爲什麼數據保護API沒有工作。

它確實有效,你只是期待比它更多。

適用於該文件的加密iOS對用戶空間中的任何內容都是透明的。加密是在硬件級完成的,因此沒有人竊取設備的閃存可以訪問數據。但是,如果屏幕解鎖並且設備已打開,則操作系統像處理其他文件一樣處理這些文件,並且它們看起來並沒有從文件系統中「加密」。

如果您想要這樣做,您必須使用一些非對稱加密方法(如AES)(OpenSSL或GnuTLS可以很好地完成這項工作)對文件進行編碼。

+0

感謝您的信息... – iPrabu

+0

最後清楚說明數據保護的目的。 – Donnit