2024年4月29日发(作者:)

-------------------精品文档---------------------

SHA1算法原理

1 SHA1算法简介

安全哈希算法(Secure HashAlgorithm)主要适用于数字签名标准

(Digital Signature StandardDSS)里面定义的数字签名算法(Digital

Signature AlgorithmDSA)。对于长度小于2^64位的消息,SHA1会产

生一个160位的消息摘要。当接收到消息的时候,这个消息

摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发

生变化,那么这时候就会产生不同的消息摘要。

SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消

息不会产生同样的消息摘要。

2 术语和概念

2.1位(Bit),字节(Byte)和字(Word)

SHA1始终把消息当成一个位(bit)字符串来处理。本文中,一个“字”

(Word)是32位,而一个“字节”(Byte)是8位。比如,字符串

“abc” 可以被转换成一个位字符串:01100001

0011。它也可以被表示成16进制字符串: 0x616263.

2.2 运算符和符号

)Word(下面的逻辑运算符都被运用于“字”

X^Y = X, Y逻辑与

X Y = X, Y逻辑或

X XOR Y= X, Y逻辑异或

---------------学资学习网----------------

-------------------精品文档---------------------

~X = X逻辑取反

X+Y定义如下:

字 X 和 Y 代表两个整数 x 和y, 其中 0 <= x < 2^32且 0 <= y

< 2^32. 令整数z = (x + y) mod 2^32. 这时候 0 <= z <2^32. 将z转换

成字Z, 那么就是 Z = X + Y.

循环左移位操作符Sn(X)。X是一个字,n是一个整数,0<=n<=32。

Sn(X) = (X<>32-n)

X<

n位,然后用0填补右边的n位(最后结果还是32位)。X>>n是抛

弃右边的n位,将各个位依次向右移动n位,然后在左边的n位填0。

因此可以叫Sn(X)位循环移位运算

3 SHA1算法描述

在SHA1算法中,我们必须把原始消息(字符串,文件等)转换成位

字符串。SHA1算法只接受位作为输入。假设我们对字符串“abc”产

生消息摘要。首先,我们将它转换成位字符串如下:

01100001 01100010 01100011

―――――――――――――

=99

'c‘=98 'b‘=97 'a‘

这个位字符串的长度为24。下面我们需要5个步骤来计算MD5。

3.1 补位

消息必须进行补位,以使其长度在对512取模以后的余数是448。也

---------------学资学习网----------------