我尝试使用swift中的keychain来保存密码,但是当我尝试调用save方法时,它返回-50的状态。
下面是我的函数:
class func save(key: String, data: String) -> OSStatus {
let query = [
kSecClass as String : kSecClassGenericPassword as String,
kSecAttrAccount as String : key,
kSecValueData as String : data ]
SecItemDelete(query as CFDictionary)
return SecItemAdd(query as CFDictionary, nil)
}
class func load(key: String) -> String? {
let query = [
kSecClass as String : kSecClassGenericPassword,
kSecAttrAccount as String : key,
kSecReturnData as String : kCFBooleanTrue!,
kSecMatchLimit as String : kSecMatchLimitOne ] as [String : Any]
var dataTypeRef: AnyObject? = nil
let status: OSStatus = SecItemCopyMatching(query as CFDictionary, &dataTypeRef)
if status == noErr {
return dataTypeRef as! String?
} else {
return nil
}
}然后我尝试调用这些函数:
let status = KeyChain.save(key: "Ufde", data: "Eli")
print("status: ", status)
let receivedData = KeyChain.load(key: "Ufde")
print(receivedData)这是我第一次尝试使用钥匙链,所以如果我在这里做错了什么,我很抱歉。
发布于 2020-11-23 03:26:16
您将密码存储为密钥链中的字符串。将密码字符串转换为数据
class func save(key: String, password: String) -> OSStatus {
let data = password.data(using: .utf8)!
let query = [
kSecClass as String : kSecClassGenericPassword as String,
kSecAttrAccount as String : key,
kSecValueData as String : data]
SecItemDelete(query as CFDictionary)
return SecItemAdd(query as CFDictionary, nil)
}https://stackoverflow.com/questions/64816200
复制相似问题