我正在使用keychain来保存一个持久数据。其中两个函数是
func savePassword(password: String, inKeychainItem: NSData?) -> NSData?
func getPasswordWithPersistentReference(persistentReference: NSData) -> String?
我只想确保,如果我使用savePassword函数并获得一个NSData,我应该将这个NSData保存在哪里,以便在下次运行应用程序时保持它的持久性?userDefault是保存这些数据的安全位置吗?
编辑:这些是我正在使用的函数
func savePassword(password: String, inKeychainItem: NSData?) -> NSData? {
guard let passwordData = password.dataUsingEncoding(NSUTF8StringEncoding, allowLossyConversion: false) else { return nil }
var status = errSecSuccess
if let persistentReference = inKeychainItem {
// A persistent reference was given, update the corresponding keychain item.
let query: [NSObject: AnyObject] = [
kSecValuePersistentRef : persistentReference,
kSecReturnAttributes : kCFBooleanTrue
]
var result: AnyObject?
// Get the current attributes for the item.
status = SecItemCopyMatching(query, &result)
if let attributes = result as? [NSObject: AnyObject] where status == errSecSuccess {
// Update the attributes with the new data.
var updateQuery = [NSObject: AnyObject]()
updateQuery[kSecClass] = kSecClassGenericPassword
updateQuery[kSecAttrService] = attributes[kSecAttrService]
var newAttributes = attributes
newAttributes[kSecValueData] = passwordData
status = SecItemUpdate(updateQuery, newAttributes)
if status == errSecSuccess {
return persistentReference
}
}
}
func getPasswordWithPersistentReference(persistentReference: NSData) -> String? {
var result: String?
let query: [NSObject: AnyObject] = [
kSecClass : kSecClassGenericPassword,
kSecReturnData : kCFBooleanTrue,
kSecValuePersistentRef : persistentReference
]
var returnValue: AnyObject?
let status = SecItemCopyMatching(query, &returnValue)
if let passwordData = returnValue as? NSData where status == errSecSuccess {
result = NSString(data: passwordData, encoding: NSUTF8StringEncoding) as? String
}
return result
}
Edit2:基本上,我只是想检查我是否保存了密码,如果保存了,我就想要得到它。为此,我需要一个persistentReference。我正在从保存密码功能中获取一个。但是我应该把它放在哪里呢?
发布于 2016-03-16 17:17:34
如果您使用函数将密码存储在secure中。以明文的方式编写密钥数据是足够安全的。因为没人能访问你的钥匙链。
没有办法访问你的钥匙链的内容信息。
https://stackoverflow.com/questions/36030799
复制相似问题