码迷,mamicode.com
首页 > 移动开发 > 详细

iOS钥匙串

时间:2015-02-28 21:40:28      阅读:211      评论:0      收藏:0      [点我收藏+]

标签:钥匙串   账号安全   存储密码   

//简介
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钥匙串

标签:钥匙串   账号安全   存储密码   

原文地址:http://blog.csdn.net/u014656271/article/details/43989973

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!