1. 单向散列函数
单向散列函数有一个输入和一个输出,输入的称为消息,输出的称为散列值。
可以获取消息的指纹,从而确定文件的“完整性”(或者叫一致性)。
输出的散列值长度是固定的。
2. 性质
根据任意长度的消息,计算出固定长度的散列值。
能够快速计算出散列值,且具备单向性。
抗碰撞性:消息不同,散列值也不同,难以发现碰撞性。
3. 术语
单向散列函数也称为摘要函数,哈希函数和杂凑函数。
4. 实际应用
检测软件是否被篡改。
用于基于口令的加密。
使用单向散列函数可以构造消息认证码——共享密钥和消息混合后计算散列值。
进行数字签名时也会使用单向散列函数——对消息散列,对散列值进行数字签名。
伪随机数生成器。
一次性口令。
5. 单向散列函数
MD4:能产生128比特的散列值,但Dobbertin提出了MD4散列碰撞方法,MD4不再安全。
MD5:能产生128比特的散列值,MD5的强抗碰撞性已经被攻破,MD5不再安全。
SHA-1:能产生160比特的散列值,SHA-1于2005年被攻破。
SHA-2:SHA-256 散列值长度256比特。
SHA-384 散列值长度384比特。
SHA-512 散列值长度512比特。
RIPEMD-160:160比特的散列值的单向散列函数,比特币中使用该散列函数。
SHA-3:SHA-1被攻破,Keccak算法被选为SHA-3算法。
6. Keccak——被选为SHA-3的算法
可以生成任意长度的散列值,为了兼容SHA-2,SHA-3,规定了SHA3-256,SHA3-224,SHA3-384和SHA3-512 4个版本。
采用了与SHA-2不同的结构,结构清晰,易于分析。
能适用与各种设备,也适用于嵌入式应用,在硬件上的实现显示出了很高的性能。
比其他候选算法安全性边际更大。
原文:https://www.cnblogs.com/yangdadahome/p/14887579.html