密钥管理散列算法散列算法也叫哈希算法,英文是Hash ,就是把任意长度的输入(又叫做预映射, pre-image),通过散列算法,变换成固定长度的输出,该输出就是散列值
这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,而不可能从散列值来唯一的确定输入值
简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数
HASH主要用于信息安全领域中加密算法,它把一些不同长度的信息转化成杂乱的128位的编码,这些编码值叫做HASH值. 也可以说,hash就是找到一种数据内容和数据存放地址之间的映射关系散列是信息的提炼,通常其长度要比信息小得多,且为一个固定长度
加密性强的散列一定是不可逆的,这就意味着通过散列结果,无法推出任何部分的原始信息
任何输入信息的变化,哪怕仅一位,都将导致散列结果的明显变化,这称之为雪崩效应
散列还应该是防冲突的,即找不出具有相同散列结果的两条信息
具有这些特性的散列结果就可以用于验证信息是否被修改
单向散列函数一般用于产生消息摘要,密钥加密等,常见的有:MD5(Message Digest Algorithm 5):是RSA数据安全公司开发的一种单向散列算法
SHA(Secure Hash Algorithm):可以对任意长度的数据运算生成一个160位的数值;在1993年,安全散列算法(SHA)由美国国家标准和技术协会(NIST)提出,并作为联邦信息处理标准(FIPS PUB 180)公布;1995年又发布了一个修订版FIPS PUB 180-1,通常称之为SHA-1
SHA-1是基于MD4算法的,并且它的设计在很大程度上是模仿MD4的
现在已成为公认的最安全的散列算法之一,并被广泛使用
原理 SHA-1是一种数据加密算法,该算法的思想是接收一段明文,然后以一种不可逆的方式将它转换成一段(通常更小)密文,也可以简单的理解为取一串输入码(称为预映射或信息),并把它们转化为长度较短、位数固定的输出序列即散列值(也称为信息摘要或信息认证代码)的过程
单向散列函数的安全性在于其产生散列值的操作过程具有较强的单向性
如果在输入序列中嵌入密码,那么任何人在不知道密码的情况下都不能产生正确的散列值,从而保证了其安全性
SHA将输入流按照每块512位(64个字节)进行分块,并产生20个字节的被称为信息认证代码或信息摘要的输出
该算法输入报文的最大长度不超过264位,产生的输出是一个160位的报文摘要
输入是按512 位的分组进行处理的
SHA-1是不可逆的、防冲突,并具有良好的雪崩效应
通过散列算法可实现数字签名实现,数字签名的原理是将要传送的明文通过一种函数运算(Hash)转换成报文摘要(不同的明文对应不同的报文摘要),报文摘要加密后与明文一起传送给接受方,接受方将接受的明文产生新的报文摘要与发送方的发来报文摘要解密比较,比较结果一致表示明文未被改动,如果不一致表示明文已被篡改
MAC (信息认证代码)就是一个散列结果,其中部分输入信息是密码,只有知道这个密码的参与者才能再次计算和验证MAC码的合法性
MAC的产生参见下图
输入信息密码散列函数信息认证代码SHA-1与MD5的比较 因为二者均由MD4导出,SHA-1和MD5彼此很相似
相应的,他们的强度和其他特性也是相似,但还有以下几点不同:对强行供给的安全性:最显著和最重要的区别是SHA-1摘要比MD5摘要长32 位
使用强行技术,产生任何一个报文使其摘要等于给定报摘要的难度对MD5是2数量级的操作,而对SHA-1则是2数量级的操作
这样,SHA-1对强行攻击有更大的强度
对密码分析的安全性:由于MD5的设计,易受密码分析的攻击,SHA-1显得不易受这样的攻击
速度:在相同的硬件上,SHA-1的运行速度比MD5慢
以上内容由大学时代综合整理自互联网,实际情况请以官方资料为准。