文档章节

Keychain 数据保存到钥匙串

JK_Jack
 JK_Jack
发布于 2015/10/19 17:36
字数 410
阅读 17
收藏 0

使用Keychain存储用户敏感信息
iOS的keychain服务提供了一种安全的保存私密信息(密码,序列号,证书等)的方式,每个ios程序都有一个独立的keychain存储。相对于NSUserDefaults、文件保存等一般方式,keychain保存更为安全,而且keychain里保存的信息不会因App被删除而丢失,所以在重装App后,keychain里的数据还能使用。从ios 3。0开始,跨程序分享keychain变得可行。

如何需要在应用里使用使用keyChain,我们需要导入Security.framework ,keychain的操作接口声明在头文件SecItem.h里。直接使用SecItem.h里方法操作keychain,需要写的代码较为复杂,为减轻咱们程序员的开发,我们可以使用一些已经封装好了的工具类,下面我会简单介绍下我用过的两个工具类:KeychainItemWrapper和SFHFKeychainUtils。

KeychainItemWrapper (下载)

KeychainItemWrapper是apple官方例子“GenericKeychain”里一个访问keychain常用操作的封装类,在官网上下载了GenericKeychain项目后,只需要把“KeychainItemWrapper.h”和“KeychainItemWrapper.m”拷贝到我们项目,并导入Security.framework 。KeychainItemWrapper的用法:

 
 
KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"Account Number"    
                                                                   accessGroup:@"YOUR_APP_ID_HERE.com.yourcompany.AppIdentifier"];   
 
//保存帐号   
[wrapper setObject:@"<帐号>" forKey:(id)kSecAttrAccount];     
       
//保存密码   
[wrapper setObject:@"<帐号密码>" forKey:(id)kSecValueData];     
       
//从keychain里取出帐号密码   
NSString *password = [wrapper objectForKey:(id)kSecValueData];       
 
//清空设置   
[wrapper resetKeychainItem];   
另外需要引入Security.framework 和KeychainItemWrapper头文件

其中方法“- (void)setObject:(id)inObject forKey:(id)key;”里参数“forKey”的值应该是Security.framework 里头文件“SecItem.h”里定义好的key,用其他字符串做key程序会崩溃!

© 著作权归作者所有

共有 人打赏支持
上一篇: 内存管理
下一篇: GCD的工作原理
JK_Jack
粉丝 0
博文 6
码字总数 2658
作品 0
广州
私信 提问
【读书笔记】iOS-使用钥匙串保护数据

一,将应用从设备上删除时,并不会删除其钥匙串项,这使得调试工作困难得多。模拟器有一个Reset Contents and Settings选项,可用于将钥匙串项移除。因此,强烈建议在模拟器上确定Keychain应...

菜鸟and小白
2018/12/14
0
0
UUID、UDID、Keychain

一、UDID 自从iOS5之后,苹果就禁止了通过代码访问UDID,在这之前,可以使用[[UIDevice cuurrent] uniqueIdenfier] 这个方法来获取某设备UDID,现在是不可能了(因为UDID是设备的唯一标识符,...

海耐射手
2018/05/30
0
0
WaxSealCore 2.0.1 释出,Mac“钥匙串”服务编程接口

这是一个 bug 修复版本,可以在这里获取。 更新内容: 修复了钥匙串对象(WSCKeychain)的 URL 属性的百分号(percent escape)编码问题 什么是 WaxSealCore WaxSealCore 是一个受 Cocoa 设计...

开源中国真理部部长
2015/03/28
647
1
WaxSealCore 1.01 释出,Mac 下的“钥匙串”服务编程接口

WaxSealCore 1.01 释出,改进内容包括: SupportsisInvisibleproperty for passphrase items SupportsisNegativeproperty for passphrase items Bug fixes 什么是 WaxSealCore WaxSealCore ......

开源中国真理部部长
2015/03/05
1K
1
WaxSealCore 2.0 释出,Mac“钥匙串”服务编程接口

WaxSealCore 2.0 释出,更新内容如下: 新特性 支持对 X.509 证书和密钥的操作 Bug 修复 什么是 WaxSealCore WaxSealCore 是一个受 Cocoa 设计影响的 OOP 框架,由 @开源中国真理部部长 用 ...

开源中国真理部部长
2015/03/20
874
0

没有更多内容

加载失败,请刷新页面

加载更多

把iOS中block代码异步执行通过信号量变成同步执行

dispatch_semaphore_t semaphore = dispatch_semaphore_create(0); [self downZipFile:^(BOOL downSucceed) { dispatch_semaphore_signal(semaphore); }]; dispatch_semaphor......

壹峰
28分钟前
1
0
excel函数使用

拼接多个字段 =CONCATENATE(B2,C2,D2,E2) 通过函数把一个sheet里面的字段搂到另一个sheet F2 唯一匹配另一个sheet的字段。 www 另一个sheet的名称 H:I www这个sheet里面从H行到I行。 2 从第几...

贾峰uk
30分钟前
1
0
SpringBoot 集成 DBUnit 、database-rider与H2数据库进行单元测试

单元测试 什么是单元测试 参考维基百科: 单元测试(Unit Testing)又称为模块测试, 是针对程序模块(软件设计的最小单位)来进行正确性检验的测试工作。程序单元是应用的最小可测试部件。在...

Tree
30分钟前
0
0
java基础知识目录

java 注解

细节探索者
33分钟前
1
0
第一个网络爬虫

准备工作 http请求头概念 1、Accept :请求报头域,用于指定客户端可接受哪些类型的信息。 2、Accept-Language :指定客户端可接受的语言类型。 3、Accept-Encoding :指定客户端可接受的内容...

轻轻的往前走
41分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部