学习Base64、MD5、HMac加密
一、Base64
二、MD5
三、HMac
一、1.Base64简单说明
描述:Base64可以成为密码学的基石,非常重要。
特点:可以将任意的二进制数据进行Base64编码
结果:所有的数据都能被编码为并只用65个字符就能表示的文本文件。
65字符:A~Z a~z 0~9 + / =
对文件进行base64编码后文件数据的变化:编码后的数据~=编码前数据的4/3,会大1/3左右。
2.Base64编码原理
1)将所有字符转化为ASCII码;
2)将ASCII码转化为8位二进制;
3)将二进制3个归成一组(不足3个在后边补0)共24位,再拆分成4组,每组6位;
4)统一在6位二进制前补两个0凑足8位;
5)将补0后的二进制转为十进制;
6)从Base64编码表获取十进制对应的Base64编码;
处理过程说明:
a.转换的时候,将三个byte的数据,先后放入一个24bit的缓冲区中,先来的byte占高位。
b.数据不足3byte的话,于缓冲区中剩下的bit用0补足。然后,每次取出6个bit,按照其值选择查表选择对应的字符作为编码后的输出。
c.不断进行,直到全部输入数据转换完成。
d.如果最后剩下两个输入数据,在编码结果后加1个“=”;
e.如果最后剩下一个输入数据,编码结果后加2个“=”;
f.如果没有剩下任何数据,就什么都不要加,这样才可以保证资料还原的正确性。

二、MD5加密
1、什么是MD5?
全称是Message Digest Algorithm 5,译为“消息摘要算法第5版”
效果:对输入信息生成唯一的128位散列值(32个字符)
MD5特点:
输入两个不同的明文不会得到相同的输出值
根据输出值,不能得到原始的明文,即其过程不可逆
MD5的应用
由于MD5加密算法具有较好的安全性,而且免费,因此该加密算法被广泛使用
主要运用在数字签名、文件完整性验证以及口令加密等方面

三、HMAC加密
//使用一个秘钥加密数据做两次散列
//秘钥来自服务器,比起MD5加盐安全得多,MD5本地的盐可能会被泄露
//1、发一个账号,服务器生成一个key(秘钥),服务器保存帐号,账号对应的key,key给客户端进行明文加密(HMAC密码),发给服务器保存,注册成功。
//2、使用已经存在的key(秘钥)对帐号加密,带着key、HMAC密码、帐号区服务器验证。
//3、 办:(1)、发帐号给服务器,请求一个key(2)、加密验证,通过把key保存在本地。
// key泄漏只是一个用户的。
//4、使用32位字符串加密,模拟登录,32位HMAC密码+发送时间 服务器验证 两次验证(收到时间 往前1-2分钟)
