龙空技术网

巴卡科普|哈希函数(1)

甘文玛卡巴卡 27

前言:

现时兄弟们对“散列函数的概念和作用”可能比较关切,姐妹们都想要分析一些“散列函数的概念和作用”的相关内容。那么小编在网络上收集了一些对于“散列函数的概念和作用””的相关文章,希望姐妹们能喜欢,兄弟们快快来了解一下吧!

甘肃省文化产权交易中心玛卡巴卡数创交易平台是甘肃省文化产权交易中心重点打造的专属提供数字文创产品开发,确权,登记,交易,交互,应用等服务的一体化综合流转服务平台。为广大数字藏品平台方,数字藏品发行方,数字藏品爱好者等数字版权相关方提供安全、开放、自由的交易平台,从而促进各数藏平台藏品的流通,获得更加规范、有序、健康的数藏生态。

哈希函数(hash function),又称散列函数,将任意长度的输入值通过散列算法,转变成固定长度的值输出,该值称为散列值,输出值通常为字母与数字组合。在加密货币中,可以称为Cryptographic hash function。

特性一:哈希碰撞,Collision Resistance

x≠y,H(x)=H(y),即输入两个不等的数,得到的哈希值是一样的。哈希碰撞不可避免。输出的数有固定位数n,则输出的取值范围在2的n次方内,而输入空间无限大,输入空间远大于输出空间。因此给定一个x,没有一个高效的方法可以找到一个y,使得H(x)=H(y)。可以使用蛮力求解(brute-force)的方法,遍历所有可能的x和y取值,最后找到一个哈希碰撞的类型。但这在实际中是不可行的,因为工作量太大。

对一个message使用digest,即用来检测一个message是否篡改。哈希函数对于不同的输入,输出值各不相同,即使修改了输入值的一个比特位,也会使得输出值发生巨大的变化。所以可以通过验证输出值是否相同来验证输入值是不是精确一致。

没有哪一个哈希函数能够在数学上证明collision resistance,即这在理论上是证明不出来的,只能依靠实践中的经验。有一些哈希函数至今没有找到人为制造哈希碰撞的方法,所以我们认为这些哈希函数是collision resistance,但也有一些哈希函数找到了,比如著名的MD5。

特性二:Hiding

哈希函数的计算过程是单项的,是不可逆的。给定一个输入值x,可以算出一个哈希值H(x),但是无法从哈希值H(x)反推出输入值x。

Hiding性质的前提是输入空间足够大,分布比较均匀。如果输入空间不够大,或者分布比较集中,那么遍历可能的输入值,便可轻易破解。因此一般在输入值后拼接一个随机数,再一起取哈希值。例如:取x+nonce,求得H(x+nonce),这样整个输入是足够随机的,分布也足够均匀。

Hiding与Collision Resistance结合,用来实现digital commitment,即数据保证,也称为digital equivalent of a sealed envelope。

Sealed envelope以股市预测为例。某个人对某只股票的涨停进行预测,验证这个预测是否准确最简单的方法是提前公布,等待结果验证。但在实际过程中,预测人的个人影响力及行为会对股市实际结果造成影响,所以应该将这个预测交给第三方机构保管。

而到了数字领域,哈希函数的特性发挥的作用就与第三方机构相似。我们把预测结果看作输入值x,通过算法得到哈希值H(x),提前公布哈希值。等到预测结果出现后,公布x,因为hiding的性质,我们是无法通过H(x)来推算出x;也因为collision resistance的性质,我们无法找到另一个数值y来获得哈希值H(x);因此如果根据x可以得到公布的哈希值H(x),那么就可以认为这个预测确实是提前预测且预测正确。

本篇科普为小编观看北大肖臻老师《区块链技术与应用》公开课后整理的笔记,欢迎转载分享。想要观看完整的课程,可直接在互联网上搜索观看。如若构成侵权行为,请私信后台删除。

标签: #散列函数的概念和作用 #哈希函数的三个性质抗碰撞性