文档章节

Keychain 数据保存到钥匙串

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

码上生花,ECharts 作品展示赛正式启动!>>>

使用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
Swift保存RSA密钥到Keychain

https://www.jianshu.com/p/c1e9bffc76f4 最近项目的需求用到RSA的加密解密,并且需要把公钥信息保存到Keychain里面,网上很多文章都是用Keychain保存账号密码什么的,自己在实现保存的公钥过...

osc_pb5yyzq7
2019/02/11
1
0
WaxSealCore 2.0.1 释出,Mac“钥匙串”服务编程接口

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

开源中国真理部部长
2015/03/28
673
1
iOS 数据持久化(扩展知识:模糊背景效果和密码保护功能)

本篇随笔除了介绍 iOS 数据持久化知识之外,还贯穿了以下内容: (1)自定义 TableView,结合 block 从 ViewController 中分离出 View,轻 ViewController 的实现,提高 TableView 的复用性 ...

KenmuHuang
2015/11/23
0
0

没有更多内容

加载失败,请刷新页面

加载更多

在Ubuntu上安装PostgreSQL

PostgreSQL是一个开放源码的通用对象关系型数据库管理系统,具有许多先进的功能,可以让你构建容错环境或复杂的应用程序。 在本文中,我们将介绍如何在Ubuntu 20.04上安装PostgreSQL数据库服...

Linux就该这么学
31分钟前
22
0
变电站GPS校时产品(GPS对时设备)在线监测技术

变电站GPS校时产品(GPS对时设备)在线监测技术 变电站GPS校时产品(GPS对时设备)在线监测技术 京准电子科技技术交流VX(ahjzsz) 1 、引言 智能变电站时间同步是智能变电站运行的基本组成部...

osc_neocf7df
31分钟前
14
0
利用ffmpeg从RTSP服务器拉流并保存各种格式文件

https://www.jianshu.com/p/c8488537501b

osc_dg0eswo7
33分钟前
15
0
常用简单消费队列实现

1.场景 很多情况下要用到生产者-消费者这个模型,比如有很多任务要处理,如日志收集、邮件发送等,需采用异步进行处理。但如果生产速度大于消费速度,这个时候就需要队列的支持 和多线程处理...

黄瓜与土豆
33分钟前
14
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部