因此,NSUserDefaults 非常易于使用。但显然,它并不太安全——没有加密。当然,客户希望应用程序偏好是安全的,因为它包含敏感数据。
但是钥匙串是安全的,虽然很难编码(显然)。那么有没有办法轻松地将 NSUserDefaults 代码转换为 Keychain 代码?换句话说,我想将应用程序首选项存储在钥匙串中。还是我在叫错树?
因此,NSUserDefaults 非常易于使用。但显然,它并不太安全——没有加密。当然,客户希望应用程序偏好是安全的,因为它包含敏感数据。
但是钥匙串是安全的,虽然很难编码(显然)。那么有没有办法轻松地将 NSUserDefaults 代码转换为 Keychain 代码?换句话说,我想将应用程序首选项存储在钥匙串中。还是我在叫错树?
以下两个解决方案都是 KeyChain API 的包装器。通过在 NSUserDefaults 类别中使用它们,您可以以干净的方式访问和存储密码。
您可以尝试以友好的方式包装钥匙串的EMKeyChain库。如果你需要存储密码,就像 NSUserDefaults 一样简单。
有一个简单的包装:Simple iPhone Keychain Code。
对于 iOS(可能还有 OS X),您可以使用我的GSKeychain库。示例用法:
// Store a secret
[[GSKeychain systemKeychain] setSecret:@"t0ps3kr1t" forKey:@"myAccessToken"];
// Fetch a secret
NSString * secret = [[GSKeychain systemKeychain] secretForKey:@"myAccessToken"];
// Delete a secret
NSString * secret = [[GSKeychain systemKeychain] removeSecretForKey:@"myAccessToken"];
希望这可以帮助!
使用 PDKeychainBindings 库非常简单。 这是我最近写的一篇文章。示例代码
而不是这个
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[[Model sharedModel] currentUser] setAuthToken:[defaults objectForKey:@"authToken"]];
用这个
PDKeychainBindings *bindings = [PDKeychainBindings sharedKeychainBindings];
[[[Model sharedModel] currentUser] setAuthToken:[bindings objectForKey:@"authToken"]];