索罗笔记-信息安全工程师-2.4 Hash函数
Hash函数
Hash函数将任意长度的报文M映射为定长的Hash码h:
h=H(M)
Hash码也称作报文摘要,他是所有报文位的函数,Hash函数可以提供保密性、报文认证以及数字签名功能。
Hash函数满足的性质:
1、单向性
2、抗弱碰撞性
3、抗强碰撞性
Hash函数常用的有MD5、SHA-1(安全Hash算法)算法、SM3算法、HMAC算法
MD5算法
MD5算法,消息分组长度为512bit 产生128bit的摘要
SHA算法
SHA(安全Hash算法),其输入为长度小于2^64位报文,输出为160bit的报文摘要,该算法对输入按512位进行分组,并以分组为单位进行处理。
SM3算法
SM3算法是对长度<2^64位的消息M,经过 填充和迭代压缩,生成长度为256位的消息摘要。
HMAC算法
MAC(消息认证码)是消息内容和秘密钥的公开函数,其输出是固定长度的短数据块。
Hash函数不使用密钥,不能直接用于MAC。因为,发送的消息M和hash结果h(M),一旦被截获,就能直接被攻击者伪造。变成M1 和 h(M1)发送出去。
HMAC(Hash消息认证码)以一种基于密钥和散列函数进行消息认证的方法。他要求通信双方共享密钥、约定算法、约定报文Hash运算(如MD5、SHA 、SM3等)