SHA-1
输入消息:M
输出消息:160位的hash值
步骤:
-
消息填充:M的长度 mod 512 = R,考虑R(R为输入消息长度按512bit进行分组后,最后一组的长度):
-
R < 448,在最后一组的末尾填充1个“1”及若干个“0”,使最后一组的位数达到448位;再在这448位的基础上填充64位,这64位是M的原始长度的二进制表示。
1 0000... ⏟ 448 − R 输 入 消 息 的 长 度 的 二 进 制 ⏟ 64 b i t \underbrace{1\ 0000...}_{448-R}\ \underbrace{输入消息的长度的二进制}_{64bit} 448−R 1 0000... 64bit 输入消息的长度的二进制 -
R >= 448,在最后一组的末尾填充1个“1”及若干个“0”,使最后一组位数达到512;再新增一组,添加448个“0”和64位M的原始长度的二进制表示。
1 00... ⏟ 512 − R 000... ⏟ 448 b i t 输 入 消 息 的 长 度 的 二 进 制 ⏟ 64 b i t ⏟ 512 b i t \underbrace{1\ 00...}_{512-R} \quad \underbrace{\underbrace{000...}_{448bit} \underbrace{输入消息的长度的二进制}_{64bit}}_{512bit} 512−R 1 00...512b
-