iOS应用层加密相关

网络开发准则

  1. 网络开发中不允许传输用户明文隐私数据
  2. 在本地不允许保存用户明文隐私数据

替换加密

里面密码本进行替换

破解方法

蛮力攻击

利用明文和密文蛮力穷尽密钥
26个字母 的密码空间: 26*25*24…3*2*1 = 26! = 2^88

字母频率分析

根据英文常用的频率进行分析,比如英文e的使用频率13%等
56~64位:几个小时或者几天破解

对称加密算法

RC4、DES、3DES、AES128、AES256等。加解密双方密钥相同。

非对称加密算法

RSA、Elgamal等。加解密双方使用密钥对。

哈希算法

MD5(16Byte)、SHA1(20Byte)等。任意长度的信息转换成到某一固定长度的信息摘要(具有唯一性,不可逆性),主要作用是对数据数据完整性校验。

特点

  1. 算法公开
  2. 对相同的数据加密,得到的j结果都是一样的
  3. 得到的结果都是定长的

用途

  1. 加密
  2. 数据完整性验证、版权问题
  3. 搜索计算 比如百度搜索是把关键词进行md重组

用的过程中常常加盐后进行加密(在前后加一些乱的数据),不过有弊端

  1. 盐是固定的,有人知道太危险

HMAC进行补充(利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。)

缺点MD5为例

散列碰撞
因为加密的数据是定长的,一共就26^32个结果,但是加密的数据远不止这么多,很可能出现两个数据加密成一样的结果

存储本地机密数据最要用钥匙串

SSKeychain

使用之前需要把权限打开

iOS应用层加密相关_第1张图片
存储密码

 //保存密码
    if (account.length >0 && pwd.length >0) {

        [SSKeychain setPassword:pwd forService:LYJLoginSeviceName account:account];
    }

获取密码:

 self.pwText.text = [SSKeychain passwordForService:LYJLoginSeviceName account:self.userText.text];

你可能感兴趣的:(ios开发,加密)