当前位置:首页 » 操作系统 » sha算法

sha算法

发布时间: 2022-01-09 04:29:53

⑴ Hash算法原理

散列表,它是基于高速存取的角度设计的,也是一种典型的“空间换时间”的做法。顾名思义,该数据结构能够理解为一个线性表,可是当中的元素不是紧密排列的,而是可能存在空隙。

散列表(Hash table,也叫哈希表),是依据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。

比方我们存储70个元素,但我们可能为这70个元素申请了100个元素的空间。70/100=0.7,这个数字称为负载因子。

我们之所以这样做,也是为了“高速存取”的目的。我们基于一种结果尽可能随机平均分布的固定函数H为每一个元素安排存储位置,这样就能够避免遍历性质的线性搜索,以达到高速存取。可是因为此随机性,也必定导致一个问题就是冲突。

所谓冲突,即两个元素通过散列函数H得到的地址同样,那么这两个元素称为“同义词”。这类似于70个人去一个有100个椅子的饭店吃饭。散列函数的计算结果是一个存储单位地址,每一个存储单位称为“桶”。设一个散列表有m个桶,则散列函数的值域应为[0,m-1]。

(1)sha算法扩展阅读:

SHA家族的五个算法,分别是SHA-1、SHA-224、SHA-256、SHA-384,和SHA-512,由美国国家安全局(NSA)所设计,并由美国国家标准与技术研究院(NIST)发布;是美国的政府标准。后四者有时并称为SHA-2。

SHA-1在许多安全协定中广为使用,包括TLS和SSL、PGP、SSH、S/MIME和IPsec,曾被视为是MD5(更早之前被广为使用的杂凑函数)的后继者。但SHA-1的安全性如今被密码学家严重质疑;

虽然至今尚未出现对SHA-2有效的攻击,它的算法跟SHA-1基本上仍然相似;因此有些人开始发展其他替代的杂凑算法。

应用

SHA-1, SHA-224, SHA-256, SHA-384 和 SHA-512 都被需要安全杂凑算法的美国联邦政府所应用,他们也使用其他的密码算法和协定来保护敏感的未保密资料。FIPS PUB 180-1也鼓励私人或商业组织使用 SHA-1 加密。Fritz-chip 将很可能使用 SHA-1 杂凑函数来实现个人电脑上的数位版权管理。

首先推动安全杂凑算法出版的是已合并的数位签章标准。

SHA 杂凑函数已被做为 SHACAL 分组密码算法的基础。

⑵ 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和SHA2算法有和区别

SHA1算法是为了兼容部分低版本的服务器,而在几年前SHA1算法逐渐淘汰,由于发展,SHA1算法已经满足不了安全需求,从而有更高版本SHA2替代。SHA2算法的证书更加安全,目前能够兼容xp sp3以上的客户端系统。如果需要安装SHA2算法可以找天威诚信的技术人员进行安装。

⑷ 请问SHA1加密算法也是不可逆的吗

SHA-1与MD5都是摘要算法,且为不可逆算法;
应用角度来讲,适用性比安全性重要,两个算法长度有所不同,SHA-1 160位,MD5 128位。
如果从安全角度,在计算出摘要后,对摘要进行签名,可以增加抗抵赖、防篡改的能力,详情请查看数字签名的资料。

⑸ SHA什么意思

SHA 安全散列算法SHA
(Secure Hash Algorithm,SHA)
是美国国家标准和技术局发布的国家标准FIPS PUB 180-1,一般称为SHA-1。其对长度不超过264二进制位的消息产生160位的消息摘要输出,按512比特块处理其输入。
SHA是一种数据加密算法,该算法经过加密专家多年来的发展和改进已日益完善,现在已成为公认的最安全的散列算法之一,并被广泛使用。该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程。散列函数值可以说时对明文的一种“指纹”或是“摘要”所以对散列值的数字签名就可以视为对此明文的数字签名。
国际机场通用代码:上海虹桥国际机场SHA

⑹ sha-1算法最大字符长度有限制吗

SHA-1算法中,只是单纯的把二进制输入串的位长度存在最后64bit,
所以,SHA-1算法的输入串的最大长度是:0 ~ (2^64 - 1)。

java 的SHA1算法怎么实现

importjava.security.*;

/*
*TestEncrypt.java
*Author:MKing
*LastDate:2005-11-21
*Description:-1,etc.
*/

publicclassTestEncrypt{

publicTestEncrypt(){}

publicStringEncrypt(StringstrSrc,StringencName){
//,
//.
//encNamedafaultto"MD5"
MessageDigestmd=null;
StringstrDes=null;

byte[]bt=strSrc.getBytes();
try{
if(encName==null||encName.equals("")){
encName="MD5";
}
md=MessageDigest.getInstance(encName);
md.update(bt);
strDes=bytes2Hex(md.digest());//toHexString
}catch(NoSuchAlgorithmExceptione){
System.out.println("Invalidalgorithm.");
returnnull;
}
returnstrDes;
}

publicStringbytes2Hex(byte[]bts){
Stringdes="";
Stringtmp=null;
for(inti=0;i<bts.length;i++){
tmp=(Integer.toHexString(bts[i]&0xFF));
if(tmp.length()==1){
des+="0";
}
des+=tmp;
}
returndes;
}

publicstaticvoidmain(String[]args){
TestEncryptte=newTestEncrypt();
StringstrSrc="可以加密汉字.Oh,andenglish";
System.out.println("SourceString:"+strSrc);
System.out.println("EncryptedString:");
System.out.println("UseDef:"+te.Encrypt(strSrc,null));
System.out.println("UseMD5:"+te.Encrypt(strSrc,"MD5"));
System.out.println("UseSHA:"+te.Encrypt(strSrc,"SHA-1"));
System.out.println("UseSHA-256:"+te.Encrypt(strSrc,"SHA-256"));
}
}

代码格式看起来舒服一点

⑻ 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(更早之前被广为使用的散列函数)的后继者。

热点内容
童编程 发布:2024-05-06 08:44:01 浏览:246
java路径配置文件 发布:2024-05-06 08:43:47 浏览:904
什么软件可以编程 发布:2024-05-06 08:37:37 浏览:46
java字符串转换 发布:2024-05-06 08:37:25 浏览:885
字符串在内存中的存储 发布:2024-05-06 08:33:29 浏览:393
安卓投影仪安装什么点歌软件 发布:2024-05-06 08:33:22 浏览:545
java开源大全 发布:2024-05-06 08:32:26 浏览:33
可以加密的阅读器 发布:2024-05-06 08:31:51 浏览:262
电脑改群晖服务器 发布:2024-05-06 07:57:19 浏览:39
冒险岛忘记服务器了怎么查 发布:2024-05-06 07:53:42 浏览:241