文档章节

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程序会崩溃!

© 著作权归作者所有

共有 人打赏支持
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
OS X:钥匙链提醒(Keychain Minder)

Kechain没有被集成在AD/OD中来,所以在企业环境中,造成很多的困扰。 在10.6中使用了Keychain Minder程序来提醒用户是否解开/新建钥匙链,如果需要禁止,把SyncLoginPassword设置为0。 #Syn...

junwong
2012/03/09
0
0

没有更多内容

加载失败,请刷新页面

加载更多

用Golang做了一个命令行贪吃蛇游戏

用Golang做了一个命令行贪吃蛇游戏 项目介绍 项目链接:https://gitee.com/lwow2025/snake-go 最近看了一本做几个小项目的书,突然就想用Golang做一个命令行贪吃蛇,也没啥特殊原因。 软件架...

Mediv
28分钟前
0
0
storm的利用并行度提高处理速度的经验

在storm的流计算框架中,在数据量非常大或者计算逻辑比较复杂的情况下,可能会造成处理速度变慢的情况,最后反而不满足了系统的处理要求,因此这里讨论一下。本文的内容是我在storm的使用过程...

飓风2000
38分钟前
0
0
课程推荐|深入浅出区块链博主:全栈区块链开发者的4堂必修课(线上优惠)

Tiny熊从2017年开始更新“深入浅出区块链”博客,在第一篇文章中,关于如何系统学习区块链技术,他这样描述:“从事区块链开发也有很多方向,如:区块链应用开发人员、区块链架构师、底层核心...

HiBlock
50分钟前
0
0
激活win10 亲测有效

1.首先,我们先查看一下Win10正式专业版系统的激活状态: 点击桌面左下角的“Windows”按钮,从打开的扩展面板中依次点击“设置”-“更新和安全”,并切换到“激活”选项卡,在此就可以查看到...

可达鸭眉头一皱
51分钟前
0
0
SpringWind180926

SpringWind SpringWind项目代码学习笔记 /SpringWind/src/main/webapp/WEB-INF/views/login.html 第15行action="#springUrl('/account/login.html')"【为什么是#springUrl】 第4行<a class=......

颖伙虫
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部