摘要算法又称哈希算法,也被叫做杂凑算法、散列算法,它表示输入任意长度的数据,输出固定长度的数据,相同的输入数据始终得到相同的输出,不同的输入数据尽量得到不同的输出。它的作用不是完成数据加密与解密工作,而是用来检验数据完整性的重要技术,运算结果具有不可逆性。
摘要算法的分类
- MD(Message Digest):消息摘要
包括:MD2,MD4,MD5。它⽣成的消息摘要都是128位的,从安全性上说:MD5 > MD4 > MD2。
- SHA(Secure Hash Algorithm):安全散列
包括:SHA-1(160),SHA-2(SHA-224,SHA-256,SHA-384,SHA-512)。
- MAC(Message Authentication Code):含有密钥的散列函数算法
它包含了MD和SHA两个系列的消息摘要算法,HMAC只是在原有的MD和SHA算法的基础上添加了密钥。MD系列:HmacMD2,HmacMD4,HmacMD5。
国密算法中的SM3也是摘要算法的一种。
摘要算法的特点
- 无论输入的信息有多长,计算出来的摘要的长度总是固定的。
- 只要输入的消息不同,对其进行摘要以后产生的摘要消息也必不相同;但相同的输入必会产生相同的输出。
- 消息摘要函数是单向函数,即只能进行正向的信息摘要,而无法从摘要中恢复出任何的消息,甚至根本就找不到任何与原信息相关的信息。
- 虽然 “碰撞” 是肯定存在的,但好的摘要算法,没有人能或者说极难从中找到“碰撞”。
摘要算法的应用
- 软件文件验证
在网络上下载文件或者软件的时候,通常都会有附上对应下载文件的摘要值,常用的是MD5或SHA1值。这样做的目的就是确保文件或软件的正确性和完整性。如果计算出来的摘要值,与网站上的摘要不相等,我们应认为下载的文件是不可信任的,应当做删除处理。
- 数字签名
数字签名是现实社会中的签名和盖章这样的行为在数字世界中的实现。但数字签名的处理过程非常耗时,因此一般不会对整个消息内容施加数字签名,而是先取消息内容的摘要值,对摘要值进行数字签名。
- 信息验证
双方协商的信息摘要算法,做同样的摘要运算,得到摘要值M',然后使用密钥对签名数据进行解密运算,得到发送方的摘要M;如果M' = M,则表示验签通过,接收的数据是可任性的。
- 安全报文传输
这主要是MAC算法的应用,最常见的就是POS与银行后台的报文传输。由于涉及到金融风险,所以在POS机与银联后台通讯的过程中,除了对个人账户的敏感信息(如卡号、卡密码)等做加密处理外,还需要对整一个通讯报文做MAC计算,在发送报文的时候,MAC值附在原始的密文后面以供接收方对接收的密文做MAC校验。
摘要算法看似简单,但其的应用广度和使用频次,却可以说是最多的,即使是加密货币赖以生存的区块链中,摘要算法也担任着重要的岗位。
免责声明:素材源于网络,如有侵权,请联系删稿。