简介:
苹果的"生态圈",钥匙串访问,使用 AES 256 加密算法,能够保证用户密码的安全, 保存的位置我们并不知道
钥匙串访问SDK,是苹果在 iOS 7.0.3 版本以后公布的
钥匙串访问的接口是纯 C 语言的,网络已经有人将它封装成 OC的框架
框架地址:https://github.com/soffes/SAMKeychain示例代码:
保存用户信息使用对比(偏好设置&钥匙串)
- (void)saveUserInfo {
// 偏好设置
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
[defaults setObject: self.usernameText.text forKey:@"username"];
// 钥匙串
NSString *bundleId = [NSBundle mainBundle].bundleIdentifier;
[SSKeychain setPassword:self.pwdText.text forService:bundleId account:@"password"];
}
获取用户信息使用对比(偏好设置&钥匙串)
- (void)loadUserInfo {
// 偏好设置
NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
self.usernameText.text = [defaults stringForKey:@"username"];
// 钥匙串
NSString *bundleId = [NSBundle mainBundle].bundleIdentifier;
self.pwdText.text = [SSKeychain passwordForService:bundleId account:@"password"];
}
说明:
1.虽然是用来保存账号密码的,但使用上和偏好设置十分相似,只要保证键值对应,即可存储
2.ForService用来作为一个唯一的标识,通常设置为bundleIdentifier
3.偏好设置存储在沙盒的Preferences中,而钥匙串的存储路径我们并不知道
- 其他功能:
/// 所有账户
+ (NSArray *)allAccounts;
/// 获取所有账户信息
+ (NSArray *)accountsForService:(NSString *)serviceName;
/// 获取账号密码
+ (NSString *)passwordForService:(NSString *)serviceName account:(NSString *)account;
/// 删除账号密码
+ (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account;
/// 将账号密码保存在钥匙串
+ (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account;