zoukankan      html  css  js  c++  java
  • iOS-Senior8-网络之进阶

    一.数据安全

    密钥:密钥是一种参数,它是在明文转换为密文或将密文转换为明文的算法中输入的参数。密钥分为对称密钥与非对称密钥(也可以根据用途来分加密密钥和解密密钥)

    明文:没有进行加密,能够直接代表原文含义的信息

    密文:经过加密处理之后,隐藏原文含义的信息

    加密:将明文转换为密文的实施过程

    解密:将密文转换为明文的实施过程

    数据安全:是一种主动的包含措施,数据本身的安全必须基于可靠的加密算法与安全体系,主要是有对称算法与公开密钥密码体系两种(非对称算法),都包含了数据的加密和解密过程

    对称算法:对称密码算法有时又叫传统密码算法,是指加密密钥可以从解密密钥中推算出来,反过来也成立

    非对称算法:对称密码算法有时又叫传统密码算法,就是加密密钥能够从解密密钥中推算出来,反过来也成立

    加密算法有很多种,在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"];

    }

  • 相关阅读:
    linux下socket编程-TCP
    python正则表达式练习篇2
    python正则表达式练习篇
    python正则表达式基础篇
    Jmeter应用初步介绍
    数据库清除重复数据
    Nginx 获取真实 IP 方案
    Mac 实用工具bash-comletion介绍安装
    MySQL的binlog数据如何查看
    Mybatlis SQL 注入与防范
  • 原文地址:https://www.cnblogs.com/zhoulina/p/5487799.html
Copyright © 2011-2022 走看看