网络开发准则
- 网络开发中不允许传输用户明文隐私数据
- 在本地不允许保存用户明文隐私数据
替换加密
里面密码本进行替换
破解方法
蛮力攻击
利用明文和密文蛮力穷尽密钥
26个字母 的密码空间: 262524...321 = 26! = 2^88
字母频率分析
根据英文常用的频率进行分析,比如英文e的使用频率13%等
56~64位:几个小时或者几天破解
对称加密算法
RC4、DES、3DES、AES128、AES256等。加解密双方密钥相同。
非对称加密算法
RSA、Elgamal等。加解密双方使用密钥对。
哈希算法
MD5(16Byte)、SHA1(20Byte)等。任意长度的信息转换成到某一固定长度的信息摘要(具有唯一性,不可逆性),主要作用是对数据数据完整性校验。
特点
- 算法公开
- 对相同的数据加密,得到的j结果都是一样的
- 得到的结果都是定长的
用途
- 加密
- 数据完整性验证、版权问题
- 搜索计算 比如百度搜索是把关键词进行md重组
用的过程中常常加盐后进行加密(在前后加一些乱的数据),不过有弊端
- 盐是固定的,有人知道太危险
HMAC进行补充(利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。)
缺点MD5为例
散列碰撞
因为加密的数据是定长的,一共就26^32个结果,但是加密的数据远不止这么多,很可能出现两个数据加密成一样的结果
存储本地机密数据最要用钥匙串
SSKeychain
使用之前需要把权限打开
存储密码
//保存密码
if (account.length >0 && pwd.length >0) {
[SSKeychain setPassword:pwd forService:LYJLoginSeviceName account:account];
}
获取密码:
self.pwText.text = [SSKeychain passwordForService:LYJLoginSeviceName account:self.userText.text];
网友评论