一.数据安全
密钥:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥(也可以根据用途来分加密密钥和解密密钥)
明文:没有进行加密,能够直接代表原文含义的信息
密文:经过加密处理之后,隐藏原文含义的信息
加密:将明文转换为密文的实施过程
解密:将密文转换为明文的实施过程
数据安全:是一种主动的包含措施,数据本身的安全必须基于可靠的加密算法与安全体系,主要是有对称算法与公开密钥密码体系两种(非对称算法),都包含了数据的加密和解密过程
对称算法:对称密码算法有时又叫传统密码算法,是指加密密钥可以从解密密钥中推算出来,反过来也成立
非对称算法:对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立
加密算法有很多种,在iOS开发当中,MD5是我们常用的摘要算法
二.MD5加密
哈希算法:一段数据唯一且极其紧凑的数值表示形式。数据的哈希值可以检验数据的完整性。一般用于快速查找和加密算法
典型的哈希算法有:MD2,MD4,MD5,和SHA-1
直接上代码
三.钥匙串加密
直接上代码
四.公钥加密
公钥和私钥都是使用证书生成的,并非我们自定义字符串就可以,我们使用的是生成好的公钥和私钥。其中------BDGIN PUBLIC KEY------和------END PUBLIC KEY------不属于密钥部分。
公钥:iOS客户端使用,我们拿到手公钥以后,只需要根据公钥处理数据就可以
- 在创建证书的时候, terminal会提示输入证书信息. 根据wizard输入对应信息就OK.
- 在创建p12密匙时, 会提示输入密码, 此时的密码必须记住, 之后会用到.
- 如果上面指令有问题,请参考最新的openssl官方文档, 以官方的为准. 之前在网上搜索指令, 被坑了一圈之后, 还是会到啃官方文档上. 每条指令文档在最后都会有几个sample,参考sample即可。
五.KVO
KVO:
(Key - Value - Observer)键值观察者,是观察者设计模式的一种具体体现。
KVO触发机制:一个对象(观察者),监测另一对象(被观察者)的某属性是否发生变化,若被监测的属性发生更改,会触发观察者的一个方法(方法名固定,类似代理方法)。
KVC使用步骤:
1.注册观察者(为被观察者指定观察者以及被观察属性)
2.实现回调方法
3.触发回调方法(被观察属性发生更改)
4.移除观察者
ViewController.h
//观察可变数组的改变情况(苹果官方文档不建议对数组进行观察)
@property (nonatomic,strong) NSMutabeArray *array;
1.注册观察者
[self addObserver:self forKeyPath:@"array" options:NSKeyValueObservingOptionNew context:nil];
2.实现回调方法
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary<NSString *,id>*)change context:(void *)context {
NSLog(@"keyPath = %@",keyPath);
NSLog(@"object = %@",object);
NSLog(@"change = %@",change);
//可以进行刷新UI操作
}
3.触发可变数组进行改变
- (void)touchesBegan:(NSSet<UITouch *>*)touches withEvent:(UIEvent)event {
NSArray *subArray = @[@"1",@"2",@"3",@"4",@"5"];
//根据keypath获取到可变数对象
[[self mutableArrayValueForKeyPath:@"array"] setArray:subArray];
}
4.视图将要消失的时候移除(位置自己定)
- (void)viewWillDisappear:(BOOL)animated{
//在不需要观察者的时候,需要把他干掉
[self removeObserver:self forKeyPath:@"array"];
}