1.base64:
1>严格的说 base64 并不算是加密,只是一种编码的算法, base64 无论是加密还是解密,都是直接操作二进制数据,系统中提供了关于 base64的加密解密的方法,都是以 base64 开头
2>base64可以将任意的二进制数据(例如图片/视频/文件等的二进制数据)编码成字符串,在网络上传输,
3>base64编码后的数据由a-z,A-Z,/ + =这些符号表示
4>base64编码之后数据会变大
2.加密的要素:算法和秘钥,算法一般是公开的,需要做的是保护秘钥的安全
1>对称加密算法:
加密解密用的都是相同的秘钥,
速度快,适合对大数据加密(例如视频)
典型的算法: DES 3DES AES
2>非对称加密算法:
算法公开,可逆的加密算法
用公钥加密,用私钥解密, (也可以用私钥加密,用公钥解密)
速度慢,适合对小数据加密,但是更加安全
典型的算法: RSA
3>普遍的加密方法:
原始数据用对称加密,在使用 非对称加密 将 对称加密的密钥 进行加密,然后在从网络上传输
4>散列算法:
散列算法经常用来给密码进行加密,(防止后台工作人员窃密)
不可逆加密: MD5 / SHA1 / SHA256 / SHA512
5>MD5 加密后是32字节
MD5虽然是不可逆的算法,(但是可以暴力破解,解决的办法是加盐)
MD5加盐:原密码+一个复杂的字符串,然后在进行 MD5运算(复杂程度还不够)
HMAC:原密码+一个字符串,进行 MD5运算,将运算的结果+原密码在进行 MD5加密,(从网络截取数据,并不破解,直接发送给服务器,也可以达到解密的效果,解决办法+时间标识)
MD5加时间戳:
将一个字符串,进行 MD5加密计算,得到一个 MD5值
把原密码和之前生成的 MD5值,再进行 HMAC加密
从服务器获取当前时间到分钟的字符串
将第二部步产生的HMAC 值+时间 和第一步产生的 MD5值进行HMAC加密
6>钥匙串
将密码保存到本地,不能保存原文,需要进行加密处理,以防沙盒文件漏,通过系统提供的钥匙串功能,可以在本地保存密码,系统使用 AES 的方式对密码进行加密
使用SSKeychain 框架进行钥匙串操作
7>ECB 和 CBC 只是加密方式并不是加密算法,传统的 AES 和 DES 都支持这两种方式
ECB: 电子密码本 将要加密的数据分块,分别加密,数据块的加密过程相互独立,互不影响.例如,相同的数据块加密结果是相同的
CBC: 密码链条 将要加密的数据分块,分别加密,后加密的数据块依赖于前面的加密结果.例如,相同的数据块加密结果是不同的
8>DES/3DES/AES
DES:数据加密标准(用的很少因为强度不够)
3DES:使用3个密钥,对相同的数据执行3次加密,强度增强(维护密钥比较麻烦)
AES:高级加密标准(目前美国国家安全局,苹果钥匙串使用的都是 AES)
9>RSA
非对称加密
算法强度复杂,加密依赖于算法与密钥
加密解密速度慢