SHA-1加密算法在加密学中扮演着极其重要的角色,可以用于实现数据保密、防止数据更改和身份验证等功能。另外,SHA-1加密算法是当今众多流行加密思想核心,几乎无处不在。它在许多安全协议中广为使用。那么,我们今天就给大家来介绍一下SHA-1加密算法。
SHA-1加密算法的原理
一、 函数与常量定义
1、 SHA-1加密算法的迭代函数
SHA-1加密算法使用80个连续的逻辑函数f0,f1,... ,f79。每个函数Ft(0≤t≤79)都操作三个32位字(B,C,D),产生一个32位字作为输出。函数Ft(B,C,D)定义如下:
(1)、 SHA-1加密算法常量
SHA-1加密算法一共需要80个32位的常量(K0,K1,...K79),以16进制给出,它们如下所示:
(1)Kt=0x5A827999 _(0≤t≤19)
(2)Kt=0x6ED9EBA1 _(20≤t≤39)
(3)Kt=0x8F1BBCDC _(40≤t≤59)
(4)Kt=0xCA62C1D6 _(60≤t≤79)
2、预处理
在进行散列值计算之前,先要对需要加密的数据进行预处理。这一预处理由三部分组成:消息填充、分割已填充消息(将填充后的消息等分成m位处理块)、为散列值计算设置初始化值。
(1)消息填充
假设原始消息(M)的长度是L位。首先,在消息最后加一位“1”,接着在这位“1”后面补k个“0”,使得L+1+k(即补位后的消息长度)满足对512取模后余数是448。然后,添加最后的64位二进制数据,这64位二进制数据就是原始L位消息(M)长度的二进制表示。例如,在8位ASCII码系统中,消息“abc”长度为