配置环境:
pod 'SSKeychain'
SSKeyChain主要的api
// 保存对应账户密码
+ (BOOL)setPassword:(NSString *)password forService:(NSString *)serviceName account:(NSString *)account;
// 提取对应账户密码
+ (NSString *)passwordForService:(NSString *)serviceName account:(NSString *)account;
// 删除对应账户密码
+ (BOOL)deletePasswordForService:(NSString *)serviceName account:(NSString *)account;
// 获取APP下所有账户
+ (NSArray *)accountsForService:(NSString *)serviceName;
//如果存储的密码是NSData
+ (NSData *)passwordDataForService:(NSString *)serviceName account:(NSString *)account;
+ (BOOL)setPasswordData:(NSData *)password forService:(NSString *)serviceName account:(NSString *)account;
SSKeyChain参数说明:
SSKeyChain的方法中涉及到的变量主要有三个, password、service、account。password、account分别保存的是密码和用户名信息。 service保存的是服务的类型,就是用户名和密码是为什么应用保存的一个标志。比如一个用户 可以再不同的论坛中使用相同的用户名和密码,那么service保存的信息分别标识不同的论坛。由于包名通常具有一定的唯一性,通常在程序中可以用包的名称来作为service的标识。
SSKeyChain和NSUserDefaults的比较
- NSUserDefaults数据以明文的形式保存在,而且存储的数据会随着APP卸载而删掉
- SSKeyChain是将数据加密后存储在本地,更安全,SSKeyChain存储的数据不会删除
示例:
code:
//说明:account、service、password分别为账户、服务名、密码,
[SSKeychain setPassword:@"123456" forService:@"pwd" account:@"xm"];
NSLog(@"xm 的 信息%@",[SSKeychain passwordForService:@"pwd" account:@"xm"]);
if ([SSKeychain deletePasswordForService:@"pwd" account:@"xm"]) {
NSLog(@"删除成功");
NSLog(@"xm 的 信息%@",[SSKeychain passwordForService:@"pwd" account:@"xm"]);
}else
{
NSLog(@"删除失败");
NSLog(@"xm 的 信息%@",[SSKeychain passwordForService:@"pwd" account:@"xm"]);
}