安全哈希算法(Secure Hash Algorithm)主要适用于数字签名标准(Digital Signature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。
SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。
SHA1算法的实现描述可以叙述为:
在
SHA1
算法中,我们必须把原始消息(字符串,文件等)转换成位字符串。
SHA1
算法只接受位作为输入。假设我们对字符串
“abc”
产生消息摘要。首先,我们将它转换成位字符串如下:
01100001 01100010 01100011
―――――――――――――
'
a'=97 ‘b’=98 ‘c’=99
这个位字符串的长度为
24
。下面我们需要
5
个步骤来计算
MD5
。
1
补位
消息必须进行补位,以使其长度在对
512
取模以后的余数是
448
。也就是说,(补位后的消息长度)
%512 = 448
。即使长度已经满足对
512
取模后余数是
448
,补位也必须要进行。
补位是这样进行的:先补一个
1
,然后再补
0
,直到长度满足对
512
取模后余数是
448
。总而言之,补位是至少补一位,最多补
512
位。还是以前面的
“abc”
为例显示补位的过程。
原始信息:
01100001 01100010 01100011
补位第一步:
01100001 01100010 01100011 1
首先补一个