iOS钥匙串

来源:互联网 发布:page 知页还是面 编辑:程序博客网 时间:2024/04/29 19:08
//简介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];        }    }];}

0 0