ドキュメントディレクトリでデータを保護する必要があるため、Apple DataProtectionAPIを使用しました。Apple Asset
- 設定アプリでデータ保護を有効にしました。[設定]->[一般]->[パスコードロックオン]
NSDataProtectionKeyを使用してファイルを書き込みます
[data writeToFile:imagePath options:NSDataWritingFileProtectionComplete error:nil];
ファイルが正常に書き込まれました
ファイル属性を取得します
[[NSFileManager defaultManager] attributesOfItemAtPath:fullPath error:NULL];
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アルゴリズムを知っています。しかし、DataProtectionAPIが機能しなかった理由を知りたい。
注:iPad2iOS6.0.1とデバイスに記録されたログを使用しています