欢迎来到天天文库
浏览记录
ID:37712591
大小:36.00 KB
页数:5页
时间:2019-05-29
《WINRAR加密中SHA1算法原理及其密钥产生过程》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、WINRAR加密中SHA1算法原理及其密钥产生过程 1SHA1算法简介 安全哈希算法(SecureHashAlgorithm)主要适用于数字签名标准(DigitalSignatureSt&ardDSS)里面定义的数字签名算法(DigitalSignatureAlgorithmDSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。 SHA1有如下特性:不可以
2、从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。 2术语和概念 2.1位(Bit),字节(Byte)和字(Word) SHA1始终把消息当成一个位(bit)字符串来处理。本文中,一个“字”(Word)是32位,而一个“字节”(Byte)是8位。比如,字符串“abc”可以被转换成一个位字符串:011000010110001001100011。它也可以被表示成16进制字符串:0x616263. 2.2运算符和符号 下面的逻辑运算符都被运用于“字”(Word) X&Y=X,Y逻辑与 X
3、Y=X
4、,Y逻辑或 X^Y=X,Y逻辑异或 ~X=X逻辑取反 X+Y定义如下: 字X和Y代表两个整数x和y,其中0<=x<2^32且0<=y<2^32.令整数z=(x+y)mod2^32.这时候0<=z<2^32.将z转换成字Z,那么就是Z=X+Y. 循环左移位操作符Sn(X)。X是一个字,n是一个整数,0<=n<=32。Sn(X)=(X<5、(X>>32-n) X<>n是抛弃右边的n位,将各个6、位依次向右移动n位,然后在左边的n位填0。因此可以叫Sn(X)位循环移位运算 3SHA1算法描述 在SHA1算法中,我们必须把原始消息(字符串,文件等)转换成位字符串。SHA1算法只接受位作为输入。假设我们对字符串“abc”产生消息摘要。首先,我们将它转换成位字符串如下: 011000010110001001100011 ――――――――――――― ‘a’=97‘b’=98‘c’=99 这个位字符串的长度为24。下面我们需要5个步骤来计算MD5。 3.1补位 消息必须进行补位,以使其长度在对5127、取模以后的余数是448。也就是说,(补位后的消息长度)%512=448。即使长度已经满足对512取模后余数是448,补位也必须要进行。 补位是这样进行的:先补一个1,然后再补0,直到长度满足对512取模后余数是448。总而言之,补位是至少补一位,最多补512位。还是以前面的“abc”为例显示补位的过程。 原始信息:011000010110001001100011 补位第一步:0110000101100010011000111 首先补一个“1” 补位第二步:0110000101100010011000118、10…..0 然后补423个“0” 我们可以把最后补位完成后的数据用16进制写成下面的样子 61626380000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000 现在,数据的长度是448了,我们可以进行下一步操作。 3.2补长度 所谓的补长度是将原始数据的长度补到已经进行了补位操作的消息后面。通常用一个64位的数据来表示原始消息的长度。9、如果消息长度不大于2^64,那么第一个字就是0。在进行了补长度的操作以后,整个消息就变成下面这样了(16进制格式) 61626380000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000018 如果原始的消息长度超过了512,我们需要将它补成512的倍数。然后我们把整个消息分成一个一个512位的数据块,分别处理每一个数据10、块,从而得到消息摘要。 3.3使用的常量 一系列的常量字K(0),K(1),...,K(79),如果以16进制给出。它们如下: Kt=0x5A827999(0<=t<=19) Kt=0x6ED9EBA1(20<=t<=39) Kt=0x8F1BBCDC(40<=t<=59) Kt=0xCA62C1D6(60<=t<=79). 3.4需要使用的函数 在SHA
5、(X>>32-n) X<>n是抛弃右边的n位,将各个
6、位依次向右移动n位,然后在左边的n位填0。因此可以叫Sn(X)位循环移位运算 3SHA1算法描述 在SHA1算法中,我们必须把原始消息(字符串,文件等)转换成位字符串。SHA1算法只接受位作为输入。假设我们对字符串“abc”产生消息摘要。首先,我们将它转换成位字符串如下: 011000010110001001100011 ――――――――――――― ‘a’=97‘b’=98‘c’=99 这个位字符串的长度为24。下面我们需要5个步骤来计算MD5。 3.1补位 消息必须进行补位,以使其长度在对512
7、取模以后的余数是448。也就是说,(补位后的消息长度)%512=448。即使长度已经满足对512取模后余数是448,补位也必须要进行。 补位是这样进行的:先补一个1,然后再补0,直到长度满足对512取模后余数是448。总而言之,补位是至少补一位,最多补512位。还是以前面的“abc”为例显示补位的过程。 原始信息:011000010110001001100011 补位第一步:0110000101100010011000111 首先补一个“1” 补位第二步:011000010110001001100011
8、10…..0 然后补423个“0” 我们可以把最后补位完成后的数据用16进制写成下面的样子 61626380000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 0000000000000000 现在,数据的长度是448了,我们可以进行下一步操作。 3.2补长度 所谓的补长度是将原始数据的长度补到已经进行了补位操作的消息后面。通常用一个64位的数据来表示原始消息的长度。
9、如果消息长度不大于2^64,那么第一个字就是0。在进行了补长度的操作以后,整个消息就变成下面这样了(16进制格式) 61626380000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000000 00000000000000000000000000000018 如果原始的消息长度超过了512,我们需要将它补成512的倍数。然后我们把整个消息分成一个一个512位的数据块,分别处理每一个数据
10、块,从而得到消息摘要。 3.3使用的常量 一系列的常量字K(0),K(1),...,K(79),如果以16进制给出。它们如下: Kt=0x5A827999(0<=t<=19) Kt=0x6ED9EBA1(20<=t<=39) Kt=0x8F1BBCDC(40<=t<=59) Kt=0xCA62C1D6(60<=t<=79). 3.4需要使用的函数 在SHA
此文档下载收益归作者所有