文章横幅PC版
文章横幅iPad版
文章横幅手机版

什么是加密哈希函数

TIME:2018-05-22   click: 285 次 来源: 未知

在计算机科学领域,“哈希”这个术语承载了太多的含义。而在加密技术领域,哈希却有着非常精确的含义。

一个加密哈希函数h(x),必须满足下列所有条件:

压缩—一对于任何长度的输入值x,输出值y=h(x)的长度都比较小。在实际使用中,通常输出值是固定长度的(比如160位长度的二进制值),而无论输入值的长度

高效—一对于任何的输入值x,必须能够很容易地计算出h(x)。当然,伴随着输入值是多少,x的长度增加,计算h(x)所需要的计算量也会随之增加,但是,这不能增长得太快。

单向—一给定任意值y,要想找到一个值x,使得h(x)=y,将是计算不可行的。换一种不同的说法,即对于哈希运算,没有行之有效的逆运算。

抗强碰撞性——要想找到任意的x和y,使得x≠y,并且h(x)=h(y),这是不可能的。也就是说,我们不能够找到任何两个输入,使得它们经过哈希后会产生相同的输出值。

既然输入值的空间远远大于输出值的空间,那么许多碰撞是必然存在的。

举个例子,假设一个特定的哈希函数生成一个128位二进制的输出。我们不妨考虑一下,比方说对于所有可能的150位二进制长度的输入值,那么平均而言,将有超过400000个输入值会被哈希到同一个输出值上。抗碰撞特性表明,所有这些碰撞都是计算上难以找到的。

对此质疑很多,而且看起来,一个现实的问题就是,这样的函数可能并不存在。然而值得注意的是,确实存在非常实用的哈希函数。

在安全领域,哈希函数是非常有用的。哈希函数的一类特别重要的应用体现在数字签名的计算方面。

事实上,对哈希值实施签名比起仅仅对消息本身实施签名,实际上会更加安全。但是,非常重要的是要认识到,现在数字签名的安全性不仅依赖于公钥系统的安全性,而且也依赖于哈希函数本身的安全性一如果二者中有任何一个比较弱签名体制就可能会被破解。

 

上一篇:公开密钥体制的表示方法 下一篇:公钥密码术和对称密码术哪个好?