2014-05-07 71 views
0

我想使用NSFileManager加密我的iPad上的文件。這是代碼:使用NSFileManager加密文件

NSString* encryptedFilePath = [dirPath stringByAppendingPathComponent:@"encryptedDummyData.txt"]; 

[[NSFileManager defaultManager] createFileAtPath:encryptedFilePath 
             contents:[@"blah blah blah blah blah" dataUsingEncoding:NSUTF8StringEncoding] 
             attributes:[NSDictionary dictionaryWithObject:NSFileProtectionComplete 
                  forKey:NSFileProtectionKey]]; 

該文件是在設備上生成的,但沒有加密。

我確保在「項目導航器/功能」下啓用了「數據保護」。

我也試過NSFileProjectionCompleteUnlessOpenNSFileProtectionCompleteUntilFirstUserAuthentication沒有運氣。

我所做的唯一「進步」是,如果我在應用程序啓動後鎖定設備,那麼我將無法使用iExplorer訪問該文件。但是,當我解鎖設備的那一刻,我就可以打開文件,並且它未加密。

那麼,NSFileManager根本就加密了一個文件?或者只是在設備被鎖定時阻止用戶訪問文件?

如果它可以加密文件,那麼我錯過了什麼?

+1

[Enable iOS On-Disk Encryption]的可能重複(http://stackoverflow.com/questions/15139305/enable-ios-on-disk-encryption) – staticVoidMan

回答

2

「但是,當我解鎖設備的時候,我能夠打開文件,並且它未加密。」

這正是文件加密的功能。加密/解密發生在靠近金屬的位置,所以就用戶和應用而言,一旦設備解鎖,它就不加密。