请稍候...
  • 通配符证书Wildcard SSL,部署全网HTTPS必备
  • 为什么使用企业型SSL证书?
  • 增强型证书EV SSL,完美支持地址栏显示中文企业名称
  • HTTPS今天你用了吗?
  • 多域名SANS/UCC SSL证书,全面支持Exchange Server 2..
  • 选择SSL证书产品遇到问题?

SHA256

点击数:99412014-06-08 00:00:00 来源: 中国数字证书CHINASSL

安全散列算法(SHA)

安全散列算法SHA(Secure Hash Algorithm)是美国国家安全局 (NSA) 设计,美国国家标准与技术研究院(NIST) 发布的一系列密码散列函数,包括 SHA-1、SHA-224、SHA-256、SHA-384 和 SHA-512 等变体。主要适用于数字签名标准(DigitalSignature Standard DSS)里面定义的数字签名算法(Digital Signature Algorithm DSA)。这种算法接受的输入文档小于2的64次方 位,产生160位的报文摘要。该算法实际的目标使得找出一个能够匹配给定的散列值的文本是不可能的计算,也就是说,如果对文档A已经计算出了散列值H(A),那么很难找到一个文档B,使其散列值H(B)=H(A),尤其困难的是无法找到满足上述条件的,而且有特定内容的文档B。SHA算法的缺点是速度比MD5慢,但是SHA的报文摘要更长,更有利于对抗野蛮的攻击!

1散列算法:

用来产生一些数据片段(例如消息或会话项)的散列值的算法。好的散列算法具有在输入数据中的更改可以更改结果散列值中每个比特的特性;因此,散列对于检测在诸如消息等大型信息对象中的任何变化很有用。此外,好的散列算法使得构造两个独立的有相同散列的输入不能通过计算方法实现。典型的散列算法包括 MD2、MD4、MD5 和 SHA-1。散列算法也被称为散列函数。散列算法的算法就是争取一个萝卜一个坑的原则。比如说有5个数 12,25,30,45,50,这几个数有个规律,就是十位数都不相同,如果我设置一个散列函数f(value)=value/10;平常的时候,我们查找50,要比较5次(其他算法可能不同),这里用散列算法只需要1次,就是解散列函数,key=50/10=5,要找的数就在第5个位子.但是上面问题还是很多的,比如说查找55呢?就会出错<因为55解散列函数之后,也是在第5个位子>,还有等等等问题,很显然这个是我散列函数没设置好,当你把散列函数设置好了后,由于数据的庞大,冲突很有可能产生,那么就需要我们来处理冲突了,所以写散列算法就是设置好的散列函数和处理冲突的过程.这里散列算法涉及的查找就跟查找的数量无关,跟冲突率有直接的关系。

2概念

在信息安全技术中,经常需要验证消息的完整性,散列(Hash)函数提供了这一服务,它对不同长度的输入消息,产生固定长度的输出。这个固定长度的输出称为原输入消息的“散列”或“消息摘要”(Message digest)。一个安全的哈希函数H必须具有以下属性:

  • l)H能够应用到大小不一的数据上。
  • 2)H能够生成大小固定的输出。
  • 3)对于任意给定的x,H(x)的计算相对简单。
  • 4)对于任意给定的代码h,要发现满足H(x)=h的x在计算上是不可行的。
  • 5)对于任意给定的块x,要发现满足H(y)=H(x)而y=x在计算上是不可行的。
  • 6)要发现满足H(X)=H(y)的(X,y)对在计算上是不可行的

3软件开发散列算法

软件开发[1]中的散列函数或散列算法,又称哈希函数,英语:Hash Function,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值的指纹。散列值通常用来代表一个短的随机字母和数字组成的字符串。好的散列函数在输入域中很少出现散列冲突。在散列表和数据处理中,不抑制冲突来区别数据,会使得数据库记录更难找到。[2]所有散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果,具有这种性质的散列函数称为单向散列函数。但另一方面,散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的。但也可能不同,这种情况称为“散列碰撞”,这通常是两个不同长度的散列值,刻意计算出相同的输出值。输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。典型的散列函数都有无限定义域,比如任意长度的字节字符串,和有限的值域,比如固定长度的比特串。在某些情况下,散列函数可以设计成具有相同大小的定义域和值域间的一一对应。一一对应的散列函数也称为排列。可逆性可以通过使用一系列的对于输入值的可逆“混合”运算而得到。由于散列函数的应用的多样性,它们经常是专为某一应用而设计的。例如,加密散列函数假设存在一个要找到具有相同散列值的原始输入的敌人。一个设计优秀的加密散列函数是一个“单向”操作:对于给定的散列值,没有实用的方法可以计算出一个原始输入,也就是说很难伪造。为加密散列为目的设计的函数,如MD5,被广泛的用作检验散列函数。这样软件下载的时候,就会对照验证代码之后才下载正确的文件部分。此代码有可能因为环境因素的变化,如机器配置或者IP地址的改变而有变动。以保证源文件的安全性。错误监测和修复函数主要用于辨别数据被随机的过程所扰乱的事例。当散列函数被用于校验和的时候,可以用相对较短的散列值来验证任意长度的数据是否被更改过。

上一页1下一页