我的应用程序存储了用户的敏感数据,我想知道什么是通用/正确/最安全的数据保护方法。
我现在的方法是将编码后的数据保存到钥匙串中,更具体地说,但很简单:
下面是我的代码位:
extension UserInformation {
static let propertyListEncoder = PropertyListEncoder()
static let propertyListDecoder = PropertyListDecoder()
static let keychain = Keychain(service: "com.xxxxx.DataSaving-App")
static func saveToKeychain(userInfo: [UserInformation]) {
let data = try? propertyListEncoder.encode(userInfo)
if let savingData = data {
dump(userInfo)
keychain[data: "encodedUserInfo"] = NSData(data: savingData) as Data
}
}
static func loadFromKeychain() -> [UserInformation]? {
guard let retrievedData = keychain[data: "encodedUserInfo"] else {
return nil }
let data = try? propertyListDecoder.decode(Array<UserInformation>.self, from: retrievedData)
return data
}
}
以上操作正常,到目前为止没有发现问题。但是,我不确定使用PropertyListEncoder是正确的编码/解码方式。请恳请参阅以下指定问题,并向我提供建议。
我花了几周的时间找到详细的解决方案,但还没有走运。请帮助新开发者。
答案 0 :(得分:0)
属性列表编码未加密。它是纯文本(可能是二进制格式);它只是序列化的一种形式。您的示例中的“加密”包括以下事实:信息隐藏在钥匙串中。而且钥匙串通常被认为足够安全。