为什么使用Keychain存储用户敏感信息 :
iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。从ios 3.0开始,跨程序分享keychain变得可行。
如何在应用里使用keyChain?
先看看SFHFKeychainUtils提供的接口
//获得保存在钥匙串里的账号和密码
/*** 这里的 Service参数就是你的appid ***/
+ (NSString *) getPasswordForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error;
//保存账号密码
+ (BOOL) storeUsername: (NSString *) username andPassword: (NSString *) password forServiceName: (NSString *) serviceName updateExisting: (BOOL) updateExisting error: (NSError **) error;
//删除账号密码
+ (BOOL) deleteItemForUsername: (NSString *) username andServiceName: (NSString *) serviceName error: (NSError **) error;
第一步:在pod里导入SFHFKeychainUtils:
pod 'SFHFKeychainUtils'
第二步:引入头文件,保存账号密码
//引入头文件
#import "SFHFKeychainUtils.h"
//删除用户
[SFHFKeychainUtils deleteItemForUsername:userName andServiceName:ServiceName error:nil];
//存储账户密码
[SFHFKeychainUtils storeUsername:userName andPassword:passwordNew forServiceName:ServiceName updateExisting:YES error:nil];
//根据用户名取出密码
NSString *passWord = [SFHFKeychainUtils getPasswordForUsername:userName andServiceName:ServiceName error:nil];