//简介
iOS7.0.3版本加入iCloud钥匙串功能
钥匙串功能可以协助记忆繁琐的个人账户信息,而且也可以在注册账户时生成一个很难破解的密码(Safari使用),之后Safari便可以自动输入这些信息
iCloud钥匙串使用了256位AES 加密技术,用户的信息会非常安全
启用iCloud钥匙串
设置——iCloud——钥匙串中开启这一功能
输入iCloud登录密
设置四位数的iCloud安全码
输入一个电话号码用于使用iCloud安全码时验证身份
//在iOS中使用钥匙串访问——sskeychain
钥匙串访问本身使用C语言的框架,为了方便起见,建议使用第三方框架 sskeychain
官网地址:https://github.com/soffes/sskeychain
常用方法:
+ (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;
提示:
钥匙串只能保证密码在本地的存储安全,并不能保证在网络传输中的安全
/**
Cookie中保存的是md5后的密码
钥匙串中保存的是用户的原始密码,能够保证用户的密码明文是安全的
SSKeychain的使用
1. 定义服务名称的宏,便于全局使用
2. 用户登录成功后,将密码明文保存到钥匙串
[SSKeychain setPassword:pwd forService:SSKeyChainService account:self.username.text];
3. 用户再次使用时,从钥匙串中读取用户密码,设置UI,可以保证密码明文被正确设置,可以保证用户体验
[SSKeychain passwordForService:SSKeyChainService account:self.username.text];
*/
- (void)viewDidLoad {
[super viewDidLoad];
// 从钥匙串中读取所有账户信息
NSArray *accounts = [SSKeychain allAccounts];
NSLog(@"%@", accounts);
// 取出张三的密码
NSString *pwd = [SSKeychain passwordForService:SSKeyChainService account:@"zhangsan"];
NSLog(@"%@", pwd);
}
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
NSString *username = @"zhangsan";
NSString *pwd = @"zhang";
// 1. url
NSURL *url = [NSURL URLWithString:@"http://192.168.19.45/login2.php"];
// 2. request
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL:url];
request.HTTPMethod = @"POST";
NSString *bodyStr = [NSString stringWithFormat:@"username=%@&password=%@", username, pwd];
request.HTTPBody = [bodyStr dataUsingEncoding:NSUTF8StringEncoding];
// 3. connection
[NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:^(NSURLResponse *response, NSData *data, NSError *connectionError) {
NSDictionary *dict = [NSJSONSerialization JSONObjectWithData:data options:0 error:NULL];
NSLog(@"%@", dict);
// 用户登录正确,在保存用户密码
if ([dict[@"userId"] intValue] > 0) {
NSLog(@"用户登录正确");
// 提示:service可以随便,能够认识就可以
[SSKeychain setPassword:pwd forService:SSKeyChainService account:username];
}
}];
}
iOS钥匙串
最新推荐文章于 2024-07-29 09:14:49 发布