我还无法确定Realm是否在iOS上默认加密。 有人可以帮我理解吗?
答案 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)