2016-05-20 7 views

答えて

5

についてUsing Realm with Background App Refresh

上記のiOS 8とオンデバイスがロックされるたびに、アプリケーション内のファイルが自動的にNSFileProtectionを使用して暗号化されています。デバイスがロックされているときに、RealmファイルのNSFileProtection属性が(デフォルトの場合)を暗号化するように設定されている場合、アプリがRealmに関与することを試みると、open() failed: Operation not permitted例外がスローされます。

さらに、Realmはそれ自身のネイティブファイルEncryptionをサポートしています。

レルムは、レルムの作成時に64バイトの暗号化キーを提供することで、ディスク上のデータベースファイルをAES-256 + SHA2で暗号化することをサポートしています。

// Generate a random encryption key 
let key = NSMutableData(length: 64)! 
SecRandomCopyBytes(kSecRandomDefault, key.length, 
    UnsafeMutablePointer<UInt8>(key.mutableBytes)) 

// Open the encrypted Realm file 
let config = Realm.Configuration(encryptionKey: key) 
do { 
    let realm = try Realm(configuration: config) 
    // Use the Realm as normal 
    let dogs = realm.objects(Dog).filter("name contains 'Fido'") 
} catch let error as NSError { 
    // If the encryption key is wrong, `error` will say that it's an invalid database 
    fatalError("Error opening realm: \(error)") 
} 

ディスク上に記憶されたデータのすべてが透過的に暗号化し、必要に応じてAES-256で復号化、およびSHA-2 HMACで確認されるように、これはそれを行います。レルムインスタンスを取得するたびに、同じ暗号化キーを入力する必要があります。

-1

独自のキーを使用する場合は、カスタムデータを提供します。

func setup(with encryptionKey: String) { 
    Swift.assert(encryptionKey.count == 64, "Base 64 encoded encryptionKey unavailable") 
    let data = Data(base64Encoded: encryptionKey) 
    Realm.Configuration.defaultConfiguration = Realm.Configuration(encryptionKey: data) 
} 

let key = "asdasnkdjbaskdjbfadshvjadskvkdsvcjavsdjhvcjdhjsakhdkjsahdkasdasd" 
setup(with: key) 
関連する問題