SSKeyChains对苹果安全框架API进行了简单封装,支持对存储在钥匙串中密码、账户进行访问,包括读取、删除和设置。SSKeyChain的作者是大名鼎鼎的SSToolkit的作者samsoffes。

项目地址:https://github.com/samsoffes/sskeychain

在工程中加入SSKeyChain

  1. 在工程中加入Security.framework框架。
  2. 把SSKeychain.h和SSKeychain.m加到项目文件夹。

使用SSKeyChain

通过以下类方法来使用SSKeyChain(请查看SSKeyChain.h):

+ (NSArray *)allAccounts;

+ (NSArray *)accountsForService:(NSString *)serviceName;

+ (NSString *)passwordForService:(NSString *)serviceNameaccount:(NSString *)account;

+ (BOOL)deletePasswordForService:(NSString *)serviceNameaccount:(NSString *)account;

+ (BOOL)setPassword:(NSString *)password forService:(NSString*)serviceName account:(NSString *)account;

文档

在Xcode中安装SSKeyChain的帮助文档需要以下步骤:

  1. 打开菜单 Xcode -> Preferences
  2. 选择 Downloads
  3. 选择 Documentation
  4. 点击底部的加号按钮,并输入以下URL: http://docs.samsoff.es/com.samsoffes.sskeychain.atom
  5. 点击”SSKeyChain Documentation”旁边的install按钮。 (如果你看不到它,也没有提示任何错误,请重启Xcode)

确保在Organizer中可选的docset中能够看到SSKeychain。

此外,可以在线查看SSKeychain Documentation

调试

如果无法保存钥匙串,请使用SSKeychain.h中提供的错误代码,例如:

NSError *error = nil;

NSString *password = [SSKeychainpasswordForService:@"MyService" account:@"samsoffes"error:&error];

if ([error code] == SSKeychainErrorNotFound) {

NSLog(@"Passwordnot found");

}

显然,你对做这个应该很熟悉了。访问钥匙串是件痛苦的事情,你要随时检查它的每个错误和失败。SSKeychain并没有使它(钥匙串)变得更稳定,它仅仅是繁琐的C APIs封装。

示例代码

保存一个UUID字符串到钥匙串:

CFUUIDRef uuid = CFUUIDCreate(NULL);
assert(uuid != NULL);
CFStringRef uuidStr = CFUUIDCreateString(NULL, uuid);
[SSKeychain setPassword: [NSString stringWithFormat:@"%@", uuidStr]

forService:@"com.yourapp.yourcompany"account:@"user"];

然后,从钥匙串读取UUID:

NSString *retrieveuuid = [SSKeychain passwordForService:@"com.yourapp.yourcompany"account:@"user"];

注意: setPassword和passwordForSevice方法中的services 和 accounts 参数应该是一致的。

最新文章

  1. JS核心系列:理解 new 的运行机制
  2. mysql 中文乱码解决方法
  3. Docker Compose—简化复杂容器应用的利器
  4. bzoj 2282: [Sdoi2011]消防
  5. 前端相关的seo技术
  6. node c/c++扩展模块build失败.
  7. Python自动化之Django的CSRF
  8. Linux企业级项目实践之网络爬虫(13)——处理user-agent
  9. Android九宫格图片(9.png)的讲解与制作
  10. Mesos和kubernetes
  11. java链接mysql添加中文和模糊查询
  12. thinkjs之页面跳转
  13. HotSpot设计原理与实现:一、初识HotSpot
  14. Spark编程指南分享
  15. 《Spring Boot 入门及前后端分离项目实践》系列介绍
  16. python实现桶排序算法
  17. Python3学习笔记21-实例属性和类属性
  18. springboot项目接入配置中心,实现@ConfigurationProperties的bean属性刷新方案
  19. centos-ftp搭建
  20. PHP的数据加密解密

热门文章

  1. 飞利浦 PHILIPS 电动牙刷HX6730 拆解
  2. 数据结构:Queue
  3. 关于PHP Notice: A non well formed numeric value encountered, 你知道多少
  4. java中break和continue跳出指定循环(转载)
  5. HTML+CSS基础课程三
  6. Android计时器和倒计时
  7. ztree根据treeId展开指定节点并触发单击事件
  8. Centos7.x Docker桥接网络
  9. 抢红包js程序
  10. redis分布式锁Redisson扩展