IOS KeyChain

KeyChain:
文档上说iOS的KeyChain是一个相对独立的空间,当程序替换,删除时并不会删除keyChain的内容,这个要比Library/Cache好。刷机,恢复出厂应该就没有了。关于备份,只会备份数据,到那时不会备份设备的密钥,换句话说,即使拿到数据,也没有办法解密里面的内容。有人说似乎破解的手机就能破解keyChain,本人并不清楚,希望有大神能指教。但个人认为,keyChain只是沙盒的升级版,可以存放一些非私密的信息,即使破解也不影响其它用户,只影响那个破解了的设备。(比如针对该设备的一个密钥)。
可访问性一般来说,自己的程序只能访问自己的keychain,相同bundle的程序通过设置group可以互相共享同组的keychain,从而实现程序间可以共同访问一些数据


下面笔者就一步一步带着大家使用KeyChain:

一、新建一个App Project (DBKeyChainDemo)

此步骤就不多说,略~

二、给予DBKeyChainDemo使用KeyChain的权限

1、打开KeyChain功能


2、KeyChain绑定证书

选择你需要打包使用的证书。


如果此处没有你需要选择的证书,就可以在View Accounts中编辑,在选择对应证书


3、完成上面两部后会出现下图效果


标注1:带有证书的KeyChain许可,不可删除(本文下部分有介绍)

标注2:ACCESS_GROUP(本文下部分有介绍)


三、使用KeyChain的准备

笔者使用第三方类:SSKeychain,并且在其基础上进行了一层实用性封装,可点击此处下载SSKeychain和全文使用的Demo:DBKeyChainDemo.zip

解压SSKeyChain.zip并将SSKeyChain文件夹加入工程

因为我们用的是KeyChain,所以需要增加系统的安全框架:Security.framework



、KeyChain的增删改查

准确的说KeyChain中只有增删查,改的部分与增加类似。

想实现对KeyChain的操作,必须理解两个概念:

1、KeyChain是和证书绑定对应的。一个KeyChain只能允许一个证书发布的应用访问,即可在一定程度上实现多应用数据共享。

2、ACCESS_GROUP:KeyChain好比是一栋房子,这栋房子归它绑定的证书管理,但是这栋房子里会有很多房间,每个房间都需要一个钥匙,而ACCESS_GROUP就相当于这个钥匙,每个应用必须持有指定的钥匙才能去特定的房间存放或者拿走东西。而这个钥匙也是和证书相关的,在申请证书的时候可以看到苹果生成的一串随机串号。比如串号是:N7KB6CDK8X,则你的ACCESS_GROUP格式就必须为N7KB6CDK8X打头的字符串。例如:N7KB6CDK8X.dengbin、N7KB6CDK8X.com.Tencent.dengbin。使用ACCESS_GROUP之前必须先对App申明这个ACCESS_GROUP(一个App可是属于有多个ACCESS_GROUP)。申明是不需要带上账号的随机串号N7KB6CDK8X。


或者在entitlements文件中申明,在此处申明的时候是需要加上串号的:


了解了这两个概念后就是对KeyChain操作了:

打开刚才下载的SSKeyChain文件夹下面的DBKeyChainStoreServer.m文件

修改#define ACCESS_GROUP @"N7KB6CDK8X.com.Tencent.dengbin"(N7KB6CDK8X为串号,若需要正常使用KeyChain,需要更换真实的串号,必须在App中已申明)


笔者使用的SSKeyChain有一个很好的功能:利用账号和储存类型存取数据。

由于是Demo的关系就不过多介绍此功能,Demo中将账号和储存类型写死,若有兴趣可自行了解或者回复留言。

/* KeyChain的安全验证账号 */

#define KeyChainAccount @"com.dengbin.KeyChainAccount"

/* KeyChain的存储类型*/

#define KeyChainService @"com.dengbin.KeyChainService"

该修改的都已经修改好,运行Demo看看效果!



ok!如果读者有什么不明白的地方希望留言,若有描述含糊不清的地方也请亲喷,拜谢!


可点击此处下载SSKeychain和全文使用的Demo:DBKeyChainDemo.zip


转载请注明出处:http://blog.csdn.net/dengbin9009/article/details/41314057


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值