sha摘要算法
① SHA1的SHA1算法描述
在SHA1算法中,我们必须把原始消息(字符串,文件等)转换成位字符串。SHA1算法只接受位作为输入。假设我们对字符串“abc”产生消息摘要。首先,我们将它转换成位字符串如下:
01100001 01100010 01100011
―――――――――――――
‘a’=97 ‘b’=98 ‘c’=99
这个位字符串的长度为24。下面我们需要5个步骤来计算消息摘要MAC。 消息必须进行补位,以使其长度在对512取模以后的余数是448。也就是说,(补位后的消息长度)%512 = 448。即使长度已经满足对512取模后余数是448,补位也必须要进行。
补位是这样进行的:先补一个1,然后再补0,直到长度满足对512取模后余数是448。总而言之,补位是至少补一位,最多补512位。还是以前面的“abc”为例显示补位的过程。
原始信息: 01100001 01100010 01100011
补位第一步:01100001 01100010 01100011 1
首先补一个“1”
补位第二步:01100001 01100010 01100011 10…..0
然后补423个“0”
我们可以把最后补位完成后的数据用16进制写成下面的样子
61626380 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000
经过以上的处理之后,数据的长度是448了,我们可以进行下一步操作。 所谓的补长度是将原始数据的长度补到已经进行了补位操作的消息后面。通常用一个64位的数据来表示原始消息的长度。如果消息长度不大于2^64,那么第一个字就是0。在进行了补长度的操作以后,整个消息就变成下面这样了(16进制格式)
61626380 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000000
00000000 00000000 00000000 00000018
如果原始的消息长度超过了512,我们需要将它补成512的倍数。然后我们把整个消息分成一个一个512位的数据块,分别处理每一个数据块,从而得到消息摘要。 一系列的常量字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). 在SHA1中我们需要一系列的函数。每个函数ft (0 <= t <= 79)都操作32位字B,C,D并且产生32位字作为输出。ft(B,C,D)可以如下定义
ft(B,C,D) = (B AND C) or ((NOT B) AND D) ( 0 <= t <= 19)
ft(B,C,D) = B XOR C XOR D (20 <= t <= 39)
ft(B,C,D) = (B AND C) or (B AND D) or (C AND D) (40 <= t <= 59)
ft(B,C,D) = B XOR C XOR D (60 <= t <= 79). 必须使用进行了补位和补长度后的消息来计算消息摘要。计算需要两个缓冲区,每个都由5个32位的字组成,还需要一个80个32位字的缓冲区。第一个5个字的缓冲区被标识为A,B,C,D,E。第二个5个字的缓冲区被标识为H0, H1, H2, H3, H4
。80个字的缓冲区被标识为W0, W1,..., W79
另外还需要一个一个字的TEMP缓冲区。
为了产生消息摘要,在第3.2部分中定义的512位(16个字)的数据块M1, M2,..., Mn
会依次进行处理,处理每个数据块Mi 包含80个步骤。
在处理所有数据块之前,缓冲区{Hi} 被初始化为下面的值(16进制)
H0 = 0x67452301
H1 = 0xEFCDAB89
H2 = 0x98BADCFE
H3 = 0x10325476
H4 = 0xC3D2E1F0.
现在开始处理M1, M2, ... , Mn。为了处理 Mi,需要进行下面的步骤
(1). 将 Mi 分成 16 个字 W0, W1, ... , W15, W0 是最左边的字
(2). 对于 t = 16 到 79 令
W[t] = S1(W[t-3] XOR W[t-8] XOR W[t-14] XOR W[t-16]).
(3). 令 A = H0, B = H1, C = H2, D = H3, E = H4.
(4) 对于 t = 0 到 79,执行下面的循环
TEMP = S5(A) + ft(B,C,D) + E + Wt + Kt;
E = D; D = C; C = S30(B); B = A; A = TEMP;
(5). 令 H0 = H0 + A, H1 = H1 + B, H2 = H2 + C, H3 = H3 + D, H4 = H4 + E.
在处理完所有的 Mn, 后,消息摘要是一个160位的字符串,以下面的顺序标识
H0 H1 H2 H3 H4.
对于SHA256,SHA384,SHA512。你也可以用相似的办法来计算消息摘要。对消息进行补位的算法完全是一样的。
SHA1在许多安全协议中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的散列函数)的后继者。
② SHA是什么
SHA即 Super High Aperture,称作超高开口率技术。一般来说,拥有UHA技术的液晶已经是具有广角的开口率,它能够增加液晶板的透光率,从而提高液晶显示的对比度,令白的更白,黑的更黑,使屏幕对比更为锐利清晰。而新SHA技术则是在UHA上基础上更进一大步,它在配线和门配线之间增加了一层特殊树脂胶膜,有效地填补了在UHA技术上形成的液晶与液晶板的表面的细小空隙,使光源扭曲和折射降低至近乎零,令光的表现更为出众,从而达到了让画面色彩的层次感更加丰富和细腻之目的。SHA技术是高品质液晶电视和液晶显示器等取得突破性进展的一项重要技术,它彻底解决了以往一直困扰着液晶界的对比度和亮度难以提高的技术瓶颈,让一切成为可能。
③ 摘要认证的原理
对于普通的非敏感数据,我们更多关注其真实性和准确性,因此,如何在通信过程中保障数据不被篡改,首当其冲成为需要考虑的问题。鉴于使用HTTPS2性能上的成本以及需要额外申请CA证书,在这种情况下,一般采用对参数和响应进行摘要的方法,即能够满足需求。
针对每次请求和响应,按照一定的规则生成数字摘要,数字摘要需要涵盖客户端与服务端通信的内容,以及双方约定好的“盐”,以此来保障请求与响应不被第三方篡改。常见的摘要算法包括MD5、SHA等,关于摘要算法的介绍,前面章节已有详细介绍,此处便不再赘述。由于传递端和接收端都认为HTTP协议的请求参数是无序的,因此客户端与服务端双方需要约定好参数的排序方式。请求的参数经过排序后,再将参数名称和值经过一定的策略组织起来,加上一个密钥secret,也就是所谓的“盐”,然后通过约定的摘要算法生成数字摘要,传递给服务端。
在服务端接收到客户端传递的参数后,服务端会采用与客户端相同的策略对参数进行排序,并且加上相同的secret,采用相同的摘要方式生成摘要串。由于相同内容经过相同的摘要算法,生成的摘要内容必定是相同的。将服务端生成的摘要串与客户端生成摘要串进行比较,这样可以得知参数内容是否被篡改。同样的,服务端返回的响应也需要加上 secret,采用约定好的摘要算法生成相应的摘要,并将生成的摘要作为响应的一部分,返回给客户端,以便验证服务端返回数据的合法性。
当客户端接收到服务端的响应后,加上相同的secret进行拼接,并采用与服务端相同的摘要算法进行摘要,生成的摘要串与服务端传递过来的摘要串进行比较,这样便可得知服务端的响应是否被篡改。
由于摘要算法的不可逆性,并且大部分情况下不同的请求参数会有不同的服务端响应,鉴于参数和响应的多变性,摘要认证这种方式能够在一定程度上防止信息被篡改,保障通信的安全。但是,摘要认证的安全性取决于secret的安全性,由于服务端与客户端采用的是相同的secret,一旦secret泄露,通信的安全则无法保障。
④ 下载软件经常看到的sha值和MD5值到底是什么意思都是校验码么。
1.SHA值就像人的指纹,是文件的数字指纹,是唯一的,一个文件对应一个唯一的SHA1值,一般用来确认你的文件和官方发布的是否一致.如果官方原版文件被别人做过手脚,那么算出来的SHA1值就会不同.所以SHA1值是用来“验明正身”的。有些居心叵测的人在官方系统光盘里面加入木马程序、广告程序等,然后再放出来给人下载,如果你不检查SHA1值就贸然安装就中招了,可以在网上下载一个数字指纹检验器来计算你下载回来的win7系统文件的SHA1值,然后到微软的MSDN去查看官方发布的SHA1值,如果两者相等,说明你下载的文件是和官方提供的是一样的,你可以放心的安装了。这就是SHA1值的用处,其他地方不用SHA1值的。 操作系统的ISO文件一般可以直接刻盘安装,不用解压出来。为了保险起见你最好用“UltraISO”软件打开你的ISO文件,如果显示为“可启动XX文件”那么你就放心直接刻录吧。 2. MD5 md5的全称是message-digest algorithm 5(信息-摘要算法),在90年代初由mit laboratory for computer science和rsa data security inc的ronald l. rivest开发出来,经md2、md3和md4发展而来。它的作用是让大容量信息在用数字签名软件签署私人密匙前被"压缩"成一种保密的格式(就是把一个任意长度的字节串变换成一定长的大整数)。不管是md2、md4还是md5,它们都需要获得一个随机长度的信息并产生一个128位的信息摘要。虽然这些算法的结构或多或少有些相似,但md2的设计与md4和md5完全不同,那是因为md2是为8位机器做过设计优化的,而md4和md5却是面向32位的电脑。这三个算法的描述和c语言源代码在internet rfcs 1321中有详细的描述( http://www.ietf.org/rfc/rfc1321.txt) ,这是一份最权威的文档,由ronald l. rivest在1992年8月向ieft提交。
求采纳
⑤ sha 1算法生成的摘要是多少位
160位。
SHA-1(英语:SecureHashAlgorithm1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。
最初载明的算法于1993年发布,称做安全散列标准(SecureHashStandard),FIPSPUB180。这个版本现在常被称为SHA-0。
它在发布之后很快就被NSA撤回,并且由1995年发布的修订版本FIPSPUB180-1(通常称为SHA-1)取代。SHA-1和SHA-0的算法只在压缩函数的消息转换部分差了一个比特的循环位移。
⑥ 请问SHA1加密算法也是不可逆的吗
SHA-1与MD5都是摘要算法,且为不可逆算法;
应用角度来讲,适用性比安全性重要,两个算法长度有所不同,SHA-1 160位,MD5 128位。
如果从安全角度,在计算出摘要后,对摘要进行签名,可以增加抗抵赖、防篡改的能力,详情请查看数字签名的资料。
⑦ “SHS“是什么算法
安全散列算法(Secure Hash Algorithm,简称SHA):是一种报文摘要算法,它产生160位的散列值。SHA已经被美国政府核准作为标准,即FIPS 180-1 Secure Hash Standard (SHS),FIPS规定必须用SHS实施数字签名算法。在产生与证实数字签名中过程中用到的HASH函数也有相应的标准做出规定.
⑧ SHA(中英文全称)的定义是什么
中文:安全散列算法
英语:Secure Hash Algorithm
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的机率很高。
⑨ sha是什么意思
sha指SHA家族。
安全散列算法(英语:Secure Hash Algorithm,缩写为SHA)是一个密码散列函数家族,是FIPS所认证的安全散列算法。能计算出一个数字消息所对应到的,长度固定的字符串(又称消息摘要)的算法。且若输入的消息不同,它们对应到不同字符串的几率很高。
相关信息:
鉴于SHA-0的破密成果,专家们建议那些计划利用SHA-1实作密码系统的人们也应重新考虑。在2004年CRYPTO会议结果公布之后,NIST即宣布他们将逐渐减少使用SHA-1,改以SHA-2取而代之。
2005年,Rijmen和Oswald发表了对SHA-1较弱版本(53次的加密循环而非80次)的攻击:在2的80次方的计算复杂度之内找到碰撞。
⑩ sha是什么
SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说时对明文的一种“指纹”或是“摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。