zoukankan      html  css  js  c++  java
  • 一个轻量级iOS安全框架:SSKeyChain

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

    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 = [SSKeychainpasswordForService:@"com.yourapp.yourcompany"account:@"user"];

     

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


  • 相关阅读:
    Python2-列表
    C#1-变量和表达式
    Python1-变量
    grep输出带有颜色设置
    ftp服务器的安装与使用
    慕课网-哒哒租车系统
    ulimit 命令
    ARP与RARP
    return 和exit
    java运行机制
  • 原文地址:https://www.cnblogs.com/melons/p/5792038.html
Copyright © 2011-2022 走看看