学习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分钟)

你可能感兴趣的:(学习Base64、MD5、HMac加密)