在之前的文章中,我们已经了解了不少加密算法,今天我们来聊一个安全散列算法——SHA-1安全散列算法,它的全称为“Secure Hash Algorithm 1”,中文名为“安全散列算法1”,是一种密码散列函数,由美国国家安全局设计,并由美国国家标准技术研究所发布。
SHA-1算法原理
对于长度小于2^64位的消息,SHA-1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。
SHA-1算法流程
步骤 1:对输入的数据进行填充,使得数据位长度对512求余的结果为448。填充比特串的最高位补一个 1,其余位补0。附加填充总是要进行的,即使消息的长度满足所要求的长度。
步骤 2:将64比特加在报文后表示报文的原始长度,使报文长度为512比特的倍数。
步骤 3:一个160位MD缓存用以保存中间和最终的散列函数的结果。它可以表示为32位寄存器(A,B,C,D,E)。初始化为 A=67452301,B=EFCDAB89,C=98BADCFE, D=10325476,E=C3D2E1F0。前四个是与MD5相同的,但存储为big-endian format,即将高序字节存储在起始地址。
步骤 4: 以512比特(16个字)分组处理消息。此算法的核心就是称为压缩算法(compression function)的模块。这个模块包括4次循环,每次循环又包含20个处理步骤。4次循环具有相似的结构,但每次循环使用不同的基本逻辑函数,称为 f1,f2,f3,f4。
步骤 5:全部L个512位数据块处理完毕后,输出160位消息摘要。
- 看到这是不是觉得还是挺熟悉的,没错,SHA-1对任意长度明文的预处理和MD5的过程是一样的,即预处理完后的明文长度是512位的整数倍,但是有一点不同,那就是SHA-1的原始报文长度不能超过2的64次方,然后SHA-1生成160位的报文摘要。因此SHA-1算法简单而且紧凑,更容易在计算机上实现。
差异
- 安全性:SHA-1所产生的摘要比MD5长32位。若两种散列函数在结构上没有任何问题的话,SHA-1比MD5更安全。
- 速度:两种方法都是主要考虑以32位处理器为基础的系统结构。但SHA-1的运算步骤比MD5多了16步,而且SHA-1记录单元的长度比MD5多了32位。因此若是以硬件来实现SHA-1,其速度大约比MD5慢了25%。
- 简易性:两种方法都是相当的简单,在实现上不需要很复杂的程序或是大量存储空间。然而总体上来讲,SHA-1对每一步骤的操作描述比MD5简单。
SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,但SHA-1的安全性却被密码学家严重质疑,于是就出现了SHA-2,作为SHA-1的升级版,安全性自然有所提高,小编会在之后的文章中继续为大家讲解,敬请期待。
免责声明:素材源于网络,如有侵权,请联系删稿。