SHA-1可将任意长度(小于2的64次方)的明文散列成固定的160位。这里分成三部分来实现SHA-1是如何操作的
一、消息填充
对明文进行填充,得到固定512位(或512的倍数),因为SHA-1是分组操作的,每一组512位。这篇文章以一组512位为例,不考虑很长。
填充方法:
1. 在明文后面先填充一个字节 1000 0000
2. 然后一直填充0,注意后面要空出64位
3. 最后64位填充的是明文的长度
举个例子:假设明文是 “abc” 因为 ‘a’ = 97, ‘b’ = '98', c = '99', 所以最开始的序列是:
01100001 01100010 01100011
1. 在明文后面先填充 1000 0000 , 那么序列就变成了
01100001 01100010 01100011 1000 0000
2. 然后一直填充0, 最后空出64位,所以这一步结束后一共有512-64=448位,如下所示,一行32位,共14行,满足32*14=448
01100001 01100010 01100011 10000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000