美文网首页
网络之数据安全(2):钥匙串加密

网络之数据安全(2):钥匙串加密

作者: 永恒守护__刘鹏辉 | 来源:发表于2016-04-07 22:25 被阅读91次

什么是钥匙串?

钥匙串:(Keychain)是苹果公司Mac OS中的密码管理系统。它在Mac OS 8.6中和iOS7之后被导入,并且包括在了所有后续的各版本中。一个钥匙串可以包含多种类型的数据:密码(包括网站,FTP服务器,SSH账户,网络共享,无线网络,群组软件,加密磁盘镜像等),私钥,电子证书和加密笔记等。

钥匙串加密

  • 苹果iOS和Mac OS X系统自带了一套敏感信息保存方案:“钥匙串(Keychain)”
  • 保存在钥匙串的内容相当于系统对其做了保护,在设备锁定时进行了加密处理
  • 钥匙串中的条目称为SecItem,但它是存储在CFDictionary中的。SecItemRef类型并不存在。SecItem有五类:通用密码、互联网密码、证书、密钥和身份。在大多数情况下,我们用到的都是通用密码
  • 钥匙串的使用和字典非常的相似
  • 用原生的Security.framework就可以实现钥匙串的访问、读写,但是只能在真机上进行。通常我们使用KeychainItemWrapper来完成钥匙串的加密。

钥匙串的使用

  • 拷贝钥匙串类到工程中
  • 引入标准头文件
  • 生成钥匙串对象
  • 存储加密的数据
  • 获得钥匙串对象
  • 获取加密的数据
    ------------------ViewController.m------------------
#import "ViewController.h"

#import "KeychainItemWrapper.h"

@interface ViewController ()

@end

@implementation ViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    // 开始的时候先把钥匙串类拷贝到工程中,也就是KeychainItemWrapper.h和KeychainItemWrapper.m文件,然后引入.m头文件
    // 另外引入的头文件是MRC模式的,需要修改BuildPhases中的值
    
    // 1. 创建一个钥匙串对象
    // 参数1 : 表示这个钥匙串对象的标识符
    // 参数2 : 分组 一般为nil
    KeychainItemWrapper *wrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyItemWrapper" accessGroup:nil];
    
    // 钥匙串是类似于字典存储的, 在存储的时候 必须使用系统提供的两个key值, 其他的存不进去
    id kUserName = (__bridge id)kSecAttrAccount;
    id kPassWord = (__bridge id)kSecValueData;
    
    // 存入到钥匙串里面
    [wrapper setObject:@"123" forKey:kUserName];
    [wrapper setObject:@"abc" forKey:kPassWord];

#pragma mark ---- 获取钥匙串的数据
    
    KeychainItemWrapper *newWrapper = [[KeychainItemWrapper alloc] initWithIdentifier:@"MyItemWrapper" accessGroup:nil];
    // 取值
    NSString *userName = [newWrapper objectForKey:kUserName];
    NSString *passWord = [newWrapper objectForKey:kPassWord];
    NSLog(@"userName ===== %@, passWord ==== %@", userName, passWord);
}
- (void)didReceiveMemoryWarning {
    [super didReceiveMemoryWarning];
    // Dispose of any resources that can be recreated.
}
@end
ARC设置修改及工程截图.png

相关文章

  • 网络之数据安全(2):钥匙串加密

    什么是钥匙串? 钥匙串:(Keychain)是苹果公司Mac OS中的密码管理系统。它在Mac OS 8.6中和i...

  • 数据安全之钥匙串加密

    简介:钥匙串(Keychain)iOS系统自带的一套敏感信息保存方案。保存钥匙串的内容相当于系统对其做了保护,在设...

  • 技能tree

    iOS 1、网络通信:socket、网络协议、request 2、安全方案:数据加密、传输加密、代码安全 3、数据...

  • 数据加密之钥匙串加密

  • 钥匙串

    钥匙串 苹果的"生态圈",钥匙串访问,使用 AES 256 加密算法,能够保证用户密码的安全 钥匙串访问SDK,是...

  • 钥匙串

    钥匙串 苹果的"生态圈",钥匙串访问,使用 AES 256 加密算法,能够保证用户密码的安全 钥匙串访问SDK,是...

  • 安全之加密篇

    密钥介绍 常见的数据安全的两大护法1 对称加密: 简单得说加密数据时使用的钥匙与解密时使用的必须是同一把钥匙2非对...

  • 数据安全- 钥匙串

    钥匙串 用来加密数据的方法 代码如下​ KeychainItemWrapper *wrapper = [[Keyc...

  • 网络安全——一图看懂HTTPS建立过程

    关于网络安全加密的介绍可以看之前文章: 1. 网络安全——数据的加密与签名,RSA介绍2. Base64编码、MD...

  • API安全

    API安全 数据准备 header: body: 客户端加密 1.生成随机AES加密字符串aes_key 2.ae...

网友评论

      本文标题:网络之数据安全(2):钥匙串加密

      本文链接:https://www.haomeiwen.com/subject/rlqvlttx.html