我的邮件:[email protected] 如果有这篇文章对您有帮助就点下推荐或者随意评论一个呗,谢谢谢谢,随便转载,标明出处就好。
4.Keychain 使用? ---为了实用最大化我觉得我应该直接先说使用!
当然是使用第三方库啦:sskeychain 3000+星星的库不开玩笑。github地址:https://github.com/soffes/sskeychain
导入完之后首先,编译一下有无错。
如果是自己手动导入:
1.把SSKeychain.h SSKeychain.m SSKeychainQuery.h SSKeychainQuery.m 复制到工程
2.添加Security.framework 怎么添加?点一下那个+
3.SSKeychain.h有错?把SSKeychain.h 中的#import <SSKeychain/SSKeychainQuery.h> 换成 #import <Foundation/Foundation.h> #import "SSKeychainQuery.h" 吧。
还有错?作为小白我的也不知道了,发我邮件一起讨论吧。
接下来演示4个过程
基本说明:储存的数据有三个 1.服务名(这个方便对账号密码进行分类)2.账号3.密码 而这三个数据都是NSString (如果要存其他类型呢,请看后面吧)
所用到的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;
1.添加一条钥匙 (这个钥匙的信息 由 服务名+账号+密码 组成)
记得添加头文件
#import "SSKeychain.h"
#import "SSKeychainQuery.h"
//先定义一下要用的东东
NSString *serviceName= @"com.keychaintest.data";
NSString *account = @"m4abcd";
NSString *password = @"12345678";
//加入钥匙串!
if ([SSKeychain setPassword:password forService:serviceName account:account]) {
NSLog(@"success !");
}
说明:就是这么简单咯。
2.查询
1.查询某service 下 count 的密码并且打印出来:
NSLog(@"%@",[SSKeychain passwordForService:serviceName account:account]);
2.查询service下所有钥匙:
NSArray *keys = [SSKeychain accountsForService:serviceName];
这是我的输出:
2016-03-04 15:08:43.785 keychaintest[31342:4403403] (
{
acct = m4abcd;
agrp = test;
cdat = "2016-03-03 07:10:58 +0000";
mdat = "2016-03-04 07:08:43 +0000";
pdmn = ak;
svce = "com.keychaintest.data";
sync = 0;
tomb = 0;
}
)
说明:返回的结果为数组,数组成员就是我们查询的钥匙,这里只有一个钥匙,而钥匙信息以字典的形式构建的,键acct 就是count,键svce 就是serviceName。密码在哪里?用方法1去取吧骚年!
3.查询本appkeychain的所有钥匙
NSArray *keys = [SSKeychain allAccounts];
3.更新
if([SSKeychain setPassword:@"321321" forService:serviceName account:account]){
NSLog(@"set success!");
}
4.删除
if([SSKeychain deletePasswordForService:serviceName account:account]){
NSLog(@"delete success!");
}
说明:删除就是把这一条钥匙删除哦,不是只删除密码!
另外的说明:如果你的password 是NSData
查询: + (NSData *)passwordDataForService:(NSString *)serviceName account:(NSString *)account;
设置or更新:+ (BOOL)setPasswordData:(NSData *)password forService:(NSString *)serviceName account:(NSString *)account;
下面开始浅浅的理解还有对苹果API进行一点点说明吧
1.Keychain 是什么?
1.keychain 就是放钥匙柜子!就是苹果提供给我们的一个保险柜。
这篇文章仅针对iOS。
在iOS中每个APP 都有属于自己的Keychain,最常用就是保存用户的账户和密码,就是记住密码,放在这里很安全(苹果负责帮我们加密再存起来,如果出了问题怪他咯!),假如用NSUserDefault 保存这些秘密数据,生成的plist文件(就放在那个Library/Preferences 下)容易被拿到,而且还要自己做加密。
2.Keychain 组成?
1.组成部分由 {N个属性键值对 + 一个密码键值对} 组成!
2.结构: 结构可以看成是一个字典的形式大概是这样的: @{@"属性key1":@"属性值1",@"属性keyN":@"属性值N",@"密码key",@"密码值"}