实验四SHA1算法原理(1)分析

SHA1算法原理1SHA1算法简介安全哈希算法(SecureHashAlgorithm)主要适用于数字签名标准(DigitalSignatureStandardDSS)里面定义的数字签名算法(DigitalSignatureAlgorithmDSA)。对于长度小于2^64位的消息,SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据很可能会发生变化,那么这时候就会产生不同的消息摘要。SHA1有如下特性:不可以从消息摘要中复原信息;两个不同的消息不会产生同样的消息摘要。2术语和概念2.1位(Bit),字节(Byte)和字(Word)SHA1始终把消息当成一个位(bit)字符串来处理。本文中,一个“字”(Word)是32位,而一个“字节”(Byte)是8位。比如,字符串“abc”可以被转换成一个位字符串:011000010110001001100011。它也可以被表示成16进制字符串:0x616263.2.2运算符和符号)Word(下面的逻辑运算符都被运用于“字”X^Y=X,Y逻辑与X\/Y=X,Y逻辑或XXORY=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<<n)OR(X>>32-n)X<<n定义如下:抛弃最左边的n位数字,将各个位依次向左移动n位,然后用0填补右边的n位(最后结果还是32位)。X>>n是抛弃右边的n位,将各个位依次向右移动n位,然后在左边的n位填0。因此可以叫Sn(X)位循环移位运算3SHA1算法描述在SHA1算法中,我们必须把原始消息(字符串,文件等)转换成位字符串。SHA1算法只接受位作为输入。假设我们对字符串“abc”产生消息摘要。首先,我们将它转换成位字符串如下:011000010110001001100011―――――――――――――=99'c‘=98'b‘=97'a‘这个位字符串的长度为24。下面我们需要5个步骤来计算MD5。3.1补位消息必须进行补位,以使其长度在对512取模以后的余数是448。也就是说,(补位后的消息长度)Q2=448。即使长度已经满足对512取模后余数是448,补位也必须要进行。补位是这样进行的:先补一个1,然后再补0,直到长度满足对512取模后余数是448。总而言之,补位是至少补一位,最多补512位。还是以前面的“abc”为例显示补位的过程。原始信息:011000010110001001100011补位第一步:0110000101100010011000111首先补一个“1”补位第二步:01100001011000100110001110…..0然后补423个“0”我们可以把最后补位完成后的数据用16进制写成下面的样子6162638000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000了,我们可以进行下一步操作。448现在,数据的长度是3.2补长度所谓的补长度是将原始数据的长度补到已经进行了补位操作的消息后面。通常用一个64位的数据来表示原始消息的长度。如果消息长度不大于2^64,那么第一个字就是0。在进行了补长度的操作以后,整个消息就变成下面这样了(16进制格式)61626380000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000018如果原始的消息长度超过了512,我们需要将它补成512的倍数。然后我们把整个消息分成一个一个512位的数据块,分别处理每一个数据块,从而得到消息摘要。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需要使用的函数在SHA1中我们需要一系列的函数。每个函数ft(0<=t<=79)都操作32位字B,C,D并且产生32位字作为输出。ft(B,C,D)可以如下定义ft(B,C,D)=(BANDC)or((NOTB)ANDD)(0<=t<=19)ft(B,C,D)=BXORCXORD(20<=t<=39)ft(B,C,D)=(BANDC)or(BANDD)or(CANDD)(40<=t<=59)ft(B,C,D)=BXORCXORD(60<=t<=79).3.5计算消息摘要必须使用进行了补位和补长度后的消息来计算消息摘要。计算需要两个缓冲区,每个都由5个32位的字组成,还需要一个80个32位字的缓冲区。第一个5个字的缓冲区被标识为A,B,C,D,E。第一个5个字的缓冲...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供参考,付费前请自行鉴别。
3、如文档内容存在侵犯商业秘密、侵犯著作权等,请点击“举报”。

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

客服邮箱:

biganzikefu@outlook.com

所有的文档都被视为“模板”,用于写作参考,下载前须认真查看,确认无误后再购买;

文档大部份都是可以预览的,笔杆子文库无法对文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;

文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为依据;

如果您还有什么不清楚的或需要我们协助,可以联系客服邮箱:

biganzikefu@outlook.com

常见问题具体如下:

1、问:已经付过费的文档可以多次下载吗?

      答:可以。登陆您已经付过费的账号,付过费的文档可以免费进行多次下载。

2、问:已经付过费的文档不知下载到什么地方去了?

     答:电脑端-浏览器下载列表里可以找到;手机端-文件管理或下载里可以找到。

            如以上两种方式都没有找到,请提供您的交易单号或截图及接收文档的邮箱等有效信息,发送到客服邮箱,客服经核实后,会将您已经付过费的文档即时发到您邮箱。

注:微信交易号是以“420000”开头的28位数字;

       支付宝交易号是以“2024XXXX”交易日期开头的28位数字。

文秘专家
机构认证
内容提供者

1

确认删除?