hash函数
Hash函数又称为哈希函数、散列函数、杂凑函数。它是一种单向密码体制,即一个从明文到密文的不可逆映射,只有加密过程,没有解密过程。
hash函数的特点:
- 易压缩:对于任意大小的输入x, Hash值H(x)的长度很小,在实际应用中,函数H产生的Hash值其长度是固定的。
- 易计算:对于任意给定的消息,计算其Hash值比较容易。
- 单向性:对于给定的Hash值h,要找到m′使得H(m′)=h在计算上是不可行的,即求Hash的逆很困难。
- 抗碰撞性:理想的Hash函数是无碰撞的,但在实际算法的设计中很难做到这一点。
SHA-1算法
SHA-1的输入是最大长度小于264位的消息,输入消息以512位的分组为单位进行处理,输出是160位的消息摘要。SHA-1具有实现速度高、容易实现、应用范围广等优点。
SHA-2算法
NIST推出SHA-2系列Hash算法,其输出长度可取224位、256位、384位、512位,分别对应SHA-224、SHA-256、SHA-384、SHA-512。它还包含另外两个算法:SHA-512/224、SHA-512/256。SHA-2系列Hash算法比之前的Hash算法具有更强的安全强度和更灵活的输出长度,其中SHA-256是常用的算法。
SHA-256算法
SHA-256算法的输入是最大长度小于264位的消息,输出是256位的消息摘要,输入消息以512位的分组为单位进行处理。
SHA-512算法
SHA-512是SHA-2中安全性能较高的算法,主要由明文填充、消息扩展函数变换和随机数变换等部分组成,初始值和中间计算结果由8个64位的移位寄存器组成。该算法允许输入的最大长度是2128位,并产生一个512位的消息摘要,输入消息被分成若干个1024位的块进行处理,具体参数为:消息摘要长度为512位;消息长度小于2128位;消息块大小为1024位;消息字大小为64位;步骤数为80步。图3-7显示了处理消息、输出消息摘要的整个过程。