Hash函数又称哈希函数、散列函数、杂凑函数。它是一种单向密码体制,即从一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
Hash函数H将可变长度的数据块M作为输入,产生固定长度的Hash值h=H(M)。
在安全应用中使用的Hash函数称为密码学Hash函数。(单向性)、(抗碰撞性)
弱抗碰撞性:给定一个消息M,要找到另一个消息M',使得H(M)=H(M')很难。
强抗碰撞性:要找到两个随机明文M和M',使得H(M)=H(M')很难。
Hash函数特点:
1. 易压缩
2. 易计算
3. 单向性
4. 抗碰撞性
5. 高灵敏性
密码学Hash函数的应用范围
消息认证
消息认证是用来验证消息完整性的一种机制或服务。消息认证确保收到的数据确实和发送时的一样(即没有修改、插入、删除或重放)。
当Hash函数用于提供消息认证功能时,Hash函数值通常称为消息摘要。
数字签名
在进行数字签名过程中使用用户的私钥加密消息的Hash值,其他任何知道该用户公钥的人都能够通过数字签名来验证消息的完整性。
其他应用
单向口令文件。
入侵检测。
病毒检测。
构建随机函数(PRF)或用做伪随机数发生器(PRNG)
安全Hash算法(SHA)
安全散列算法SHA(Secure Hash Algorithm)是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等变体。主要适用于数字签名标准(DigitalSignature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。
SHA-1
SHA-1产生160位的Hash值。
SHA1始终把消息当成一个位(bit)字符串来处理。
SHA-2
Hash值长度依次为256位、384位和512位,分别称为SHA-256、SHA-384和SHA-512,这些算法统称为SHA-2。
SHA-2同SHA-1类似,都使用同样的迭代结构和同样的模算术运算与二元逻辑操作。
SHA- |
---|