用keychain保存用户的账号,密码,uuid

1.keychain(钥匙串)的功能

目前keychain的主要功能就是帮助用户安全地记住他的密码,keychain保存的密码文件都是经过加密的,其它人不能直接通过打开keychain的文件获得保存在keychain中的密码。在mac上可以安装钥匙串应用,一般情况下只有用户正确输入了mac系统的用户名和密码才能查看到用户保存在keychain中的密码。

Apple还提供了使用keychain保存密码的API,如果应用程序使用了keychain API来保存密码,保存密码的结果都可以在钥匙串应用中查看到。Apple自带的浏览器Safari就是用的keychain来保存密码的,当用户在一个网页中输入了用户名和密码之后,Safari会询问用户是否需要记住密码。如果用户选择记住Safari则会采用keychain进行密码的保存,在下次用户再次访问同一个网站的时候,系统会自动进行用户名和密码的填充。同时在钥匙串程序中,可以看到Safari保存的针对特定网页的用户名,在输入了系统登录密码之后可以查看到对应的密码明文。

2,iOS中使用keychain和userdefaults保存数据的对比

userdefault适合保存一些轻量级的数据,使用userdefault保存的数据加载的时候要快一些,数据以明文的形式保存在.plist文件中,不适合用来保存密码信息。文件的位置是Library/Application Support/iPhone Simulator/模拟器版本/Applications/应用对应的数字/Library/Preference/.plist文件

keychain采用的是将数据加密之后再保存到本地的,这样对数据而言有更高的安全性,适合保存密码之类的数据。数据保存的目录是Library/Application Support/iPhone Simulator/模拟器版本/Library/Keychains/

3.接下来介绍SSKeychain的使用

Apple针对keychain也提供了丰富的开发文档说明,包括有Keychain Services Programming Guide

对于只需要保存用户名和密码等的应用来说,SSKeyChain可能更加适合,它对keychain做了相应的封装,接口相对来说更加简单。

github有相应的源码和简介以及使用方法:SSKeyChain源码。
https://github.com/samsoffes/sskeychain

4,导入SSKeychain的步骤
1》在git上下载项目,将SSKeychain.h和SSKeychain.m导入到自己的项目中
2》添加Security.framework到自己的项目中

5,示例代码

1》保存一个UUID字符串到钥匙串:

CFUUIDRef uuid = CFUUIDCreate(NULL);assert(uuid != NULL);CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid);

[SSKeychain setPassword: [NSString stringWithFormat:@"%@", uuidStr]
forService:@"com.yourapp.yourcompany"account:@"user"];

2》从钥匙串读取UUID:

NSString *retrieveuuid = [SSKeychainpasswordForService:@"com.yourapp.yourcompany"account:@"user"];

如果无法保存钥匙串,请使用SSKeychain.h中提供的错误代码,例如:

NSError *error = nil;
NSString *password = [SSKeychainpasswordForService:@"MyService" account:@"samsoffes"error:&error];

if ([error code] == SSKeychainErrorNotFound) {
NSLog(@"Passwordnot found");
}

注意: setPassword和passwordForSevice方法中的services 和 accounts 参数应该是一致的。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值