iOS钥匙串
//简介 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]; } }]; }
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。