在iOS上,Realm是默认加密的

时间:2016-05-20 09:44:19

标签: ios encryption realm

我还无法确定Realm是否在iOS上默认加密。 有人可以帮我理解吗?

2 个答案:

答案 0 :(得分:8)

在Realm文档部分中,有关 Using Realm with Background App Refresh

的信息
  

在iOS 8及更高版本上,只要设备被锁定,应用内的文件就会使用NSFileProtection自动加密。如果您的应用在设备被锁定时尝试执行涉及Realm的任何工作,并且您的Realm文件的NSFileProtection属性设置为加密(默认情况下是这种情况),则{将抛出{1}}异常。

除此之外,Realm还提供了自己的原生文件Encryption支持。

  

Realm支持在创建Realm时通过提供64字节加密密钥,使用AES-256 + SHA2加密磁盘上的数据库文件。

open() failed: Operation not permitted
     

这使得存储在磁盘上的所有数据都可以根据需要使用AES-256进行透明加密和解密,并使用SHA-2 HMAC进行验证。每次获得Realm实例时都必须提供相同的加密密钥。

答案 1 :(得分:-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)