文档章节

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
广州
私信 提问
UUID、UDID、Keychain

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

海耐射手
05/30
0
0
使用Keychain存储用户敏感信息

通常情况下,可以用NSUserDefaults存储数据信息,但是对于一些私密信息,比如账号、密码等等,就需要使用更为安全的keychain了。keyChain是苹果提供的一种安全的保存用户名、密码、证书的方式...

朝雨晚风
2016/08/15
0
0
iOS的密码管理系统 Keychain的介绍和使用

Keychain 的介绍 Keychain 是苹果公司 Mac OS(也包含 Mac OSX) 中的密码管理系统。 Keychain的作用 Keychain 可以包含许多种类型的数据:密码(包括网站、FTP服务器、SSH账户、网络共享、无线...

爱恨的潮汐
05/28
0
0
keychain在kSecValueData中存放Dictionary

我使用的是apple 上提供的sample code KeychainItemWrapper 在此基础上进行修改 相关链接: http://useyourloaf.com/blog/2010/04/28/keychain-duplicate-item-when-adding-password.html h......

董桉远
2013/01/25
0
0
Mac OS X: Mac电脑安全基础

Mac电脑安全基础 Securing your Mac basic 版权信息 : 本着开放交流的原则欢迎转载,除非明确声明"谢绝转载"等字样. 所 有文章/图片/代码(除转载和翻译),版权均属文章作者 . 转 载请遵守下面...

junwong
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis 中$与#的区别,预防SQL注入

一直没注意Mybatis 中$与#的区别,当然也是更习惯使用#,没想到避免了SQL注入,但是由于要处理项目中安全渗透的问题,不可避免的又遇到了这个问题,特此记录一下。 首先是共同点: 在mybatis...

大雁南飞了
22分钟前
0
0
Cydia的基石:MobileSubstrate

在MAC与IOS平台上,动态库的后缀一般是dylid,而加载这些动态库的程序叫做dynamic linker(dyld)。这个程序有很多的环境变量来设置程序的一些行为,最为常用的一个环境变量叫做"DYLD_INSERT_...

HeroHY
25分钟前
1
0
Spring Clould负载均衡重要组件:Ribbon中重要类的用法

Ribbon是Spring Cloud Netflix全家桶中负责负载均衡的组件,它是一组类库的集合。通过Ribbon,程序员能在不涉及到具体实现细节的基础上“透明”地用到负载均衡,而不必在项目里过多地编写实现...

Ala6
34分钟前
0
0
让 linux 删除能够进入回收站

可以参考这个贴子 https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79543316 从那个git地址 把saferm.sh下载下来 把saferm.sh复制到 /usr/bin 目录下 在用~/目下 的.bashrc 下加一句这...

shzwork
44分钟前
1
0
Qt那些事0.0.9

关于QThread,无F*k说的。文档说的差不多,更多的是看到很多人提到Qt开发者之一的“你TM的做错了(You're doing it wrong...)”,这位大哥2010年写的博客,下面评论很多,但主要还是集中在2...

Ev4n
今天
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部