单向hash函数

一、单向Hash函数

单向Hash函数有很多名字:压缩函数、缩短函数、消息摘要、指纹、密码校验和、信息完整性检验(DIC)、操作检验码(MDC)。不管你怎么叫,它是现代密码学的中心。单向Hash函数是许多协议的另一个结构模块。

Hash函数长期以来一直在计算机科学中使用,无论从数学上或别的角度看,Hash函数就是把可变输入长度串(叫做预映射,Pre-image)转换成固定长度(经常更短)输出串(叫做hash值)的一种函数。简单的Hash函数就是对预映射的处理,并且返回由所有输入字节异或组成的一字节。

这儿的关键就是采集预映射的指纹:产生一个值,这个值能够指出候选预映射是否与真实的预映射有相同的值。因为Hash函数是典型的多到一的函数,我们不能用它们来确定两个串一定相同,但我们可用它来得到准确性的合理保证。

单向Hash函数是在一个方向上工作的Hash函数,从预映射的值很容易计算其Hash值,但要产生一个预映射的值使其Hash值等于一个特殊值却是很难的。好的hash函数也是无冲突的:难于产生两个预映射的值,使他们的hash值相同。

Hash函数是公开的,对处理过程不用保密。单向hash函数的安全性是它的单向性。无论怎么看,输出不依赖于输入。预映射单个比特的改变,平均而言,将引起hash值中一半的比特改变。已知一个hash值,要找到预映射的值,使它的hash值等于已知的hash值在计算上是不可行的。

二、哈希函数

 即对于任意长度的信息m,经过哈希函数运算后,压缩后固定长度的数,比如64比特HASH函数的特殊要求是:

1. 已知哈希函数的输出,要求它的输入是困难的,即已知c=Hashm),求m是困难的。这表现了函数的单向性。

2. 已知m,计算Hashm)是容易的。这表现了函数的快速性。

3. 已知,构造m2使Hashm2=c1是困难的。这是函数的抗碰撞性。

4. c=Hashm),c的每一比特都与m的每一比特有关,并有高度敏感性。即每改变m的一比特,都将对c产生明显影响。这就是函数的雪崩性。

5. 作为一种数字签名,还要求哈希函数除了信息m自身之外,应该基于发信方的秘密信息对信息m进行确认。

6. 接受的输入m数据没有长度限制;对输入任何长度的m数据能够生成该输入报文固定长度的输出;

曾有数家统计计算结果表明,如hash(m)的长度为128(bit)时,则任意两个分别为M1M2的输入报文具有完全相同的h(m)的概率为1024,即近于零的重复概率。它较人类指纹的重复概率1019还要小5个数量级。而当我们取hash(m)384(bit)乃至1024(bit)时,则更是不大可能重复了。

另外,如输入报文M1与输入报文M2全等,则有h(m1)h(m2)全等,如只将M2M1中的某任意一位(bit)改变了,其结果将导致h(m1)h(m2)中有一半左右对应的位(bit)的值都不相同了。这种发散特性使电子数字签名很容易发现(验证签名)输入报文的关键位的值被人篡改了。

 

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值