SHA1算法原理过程详解
发布日期:2018-12-11
SHA1是一种密码散列函数,由美国国家安全局设计,主要适用于数字签名标准里面定义的数字签名算法。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。今天我们将讨论的是SHA1算法原理和流程。
SHA1哈希算法流程
对于任意长度的明文,SHA1首先对其进行分组,使得每一组的长度为512位,然后对这些明文分组反复重复处理。对于每个明文分组的摘要生成过程如下:
1、将512位的明文分组划分为16个子明文分组,每个子明文分组为32位。
2、申请5个32位的链接变量,记为A、B、C、D、E。
3、16份子明文分组扩展为80份。
4、80份子明文分组进行4轮运算。
5、链接变量与初始链接变量进行求和运算。
6、链接变量作为下一个明文分组的输入重复进行以上操作。
7、 最后,5个链接变量里面的数据就是SHA1摘要。
SHA1算法的分组过程
对于任意长度的明文,SHA1的明文分组过程与MD5相类似,首先需要对明文添加位数,使明文总长度为448(mod512)位。在明文后添加位的方法是第一个添加位是l,其余都是0。然后将真正明文的长度(没有添加位以前的明文长度)以64位表示,附加于前面已添加过位的明文后,此时的明文长度正好是512位的倍数。与MD5不同的是SHA1的原始报文长度不能超过2的64次方,另外SHA1的明文长度从低位开始填充。
经过添加位数处理的明文,其长