钥匙串

  • 简介:
    苹果的"生态圈",钥匙串访问,使用 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;

你可能感兴趣的:(钥匙串)