哈希算法为什么不可逆?

上篇文章我们讲到哈希算法是什么意思我讲过了哈希算法的一个特点。就是防止碰撞。也就是说你在方程的左边输入一个值,或者输入一堆值,这里只要稍微改动一点儿点儿,方程的右边就会发生巨大的变化。而且你无法人为制造两个输入值不一样,而输出值一样的情况。

今天再来说一说哈希算法的第二个特点,所谓藏匿计算,也可以说是不可逆计算。其实我在上一次的时候简单提过这种性质,也就是说他只能正着推,不能反着推。你由一个方程的x可以推导出y,但是你知道了y,却推不出x。

如果你硬是要推出x怎么办呢?总不可能一个一个去试吧。恭喜你,答对了,就是一个一个去试。就是蛮干,必须喝大力,大力出奇迹。

这也就是为什么人们把比特币计算,叫做挖矿的原因。因为这个随机值nonce你是算不来的,你只能通过计算机一个一个去试,你想你挖矿的时候是不是就是一敲一敲就挖的,这是一种比喻。计算机无非就是0101的信号,那你就试吧,什么时候试到这个数字了,你就获得了记账权。挖矿成功。

哈希算法为什么不可逆?

注意,这个算法要实现需要几个先决条件。一是它的输入空间要足够大,大到什么程度呢?大到想多大就有多大。大到你不能想象,大到你很难遍历它。

二是它的数值分布要足够均匀。啥意思?比如说总的取值是1~10000。中间有十个随机数的输出值是可以满足条件。这十个不能全部集中在前100个里。那样你只遍历前100个不就可以了。

那这种性质有什么用处呢?你注意他这个名字,藏匿的计算。也就是说他可以把某种结果某种信息隐藏起来,从而防止人为影响这种结果。这种问题被称作密封信件。

啥意思?大白话解释一下。比如马斯克想要检验自己在币圈预测的威力。就说明天某些币要涨超过30%,然后今天马斯克就在头条上公布说明天几个币要超过30%,那我怎么知道马斯克预测的是正确的呢?你肯定会说,这多简单,明天看看盘面是不是涨了不就行了。

这个做法有问题吗?有问题。因为马斯克是马斯克,你是你,你不重要,马斯克很重要。

我说过首富喊单,法力无边。马斯克如果今天公布了他的这个信息,那可能就会对这些币的走势形成影响,那他这个预测就不是预测,而有可能是他自己操纵的,这里我们不考虑财务经济上的所谓有效市场假说,只说存在这种可能性,起码我们无法排除马斯克喊单对币价的走势是不是有影响。

那怎么办呢?这就是一个所谓密封信件的问题。这个时候哈希算法的这种藏匿的,不可逆计算的性质,就能很好的发挥他的作用。

比如马斯克可以把他预测的这几种币的信息进行一个哈希运算。得到一个随机的数值。然后呢就把这个数值在今天这么放着。这个时候大家看到的是一个数值,看不到马斯克到底说的哪几种,对吧?

等到明天开盘,如果真的是这几种。我们这个时候再根据马斯克提供的这样一个哈希数值验证马斯克之前说的品种。就能验证马斯克到底说的对不对了。

注意,这种藏匿计算与第一种防止碰撞的性质是在一起用的。因为这几种币的组合是确定的,得到的哈希值就是确定。只要中间稍微有一点儿改动,那后面的哈希值就会变化。同时你不能根据这个哈希值去算出是哪几种币。

这个逻辑有问题吗?有没有漏洞?聪明的朋友应该看出来了,有。藏匿计算的一个先决条件是输入要足够大。但是币市不符合这个要求,币种就那么多,如果你用强大的计算能力,一个一个去试,或者几个几个去试去组合,也许是有可能凑出几种币的组合达到这个哈希值要求的。

那怎么办?也很简单。只要加入某种随机数,跟马斯克预测的结果一起进行计算就可以了。随机数这个不好理解,太学术,我再用大白话通俗解释一下。

比如说吧,你可以预测这个币那个币,总之预测十种币。但是你在计算的时候呢,不要只拿着十种币的名字进行计算,你可以加上一些废话,比如我特别想有钱,我想和马斯克一样有钱,我要当首富,我好帅呀,我喜欢美女这种话,要多恶心有多恶心,这谁能猜得到?然后跟你预测的币种一起进行计算,这样得到的哈希值就没办法破解了,懂了吧,大概就这个意思。

现在有人说币市进入了牛市,问我是不是,我说我不知道,我真的不知道。所以我决定看看白皮书,学习底层的逻辑,消磨一点儿时间。慢慢儿也就不想他是熊市还是牛市呢?对吧?

原创文章,发布者:链切网,转转请注明出处:https://www.lianqie.com/12503.html

本文内容部分来自于网络,如有侵权,烦请联系我们删除

本站作为开放的资讯分享平台,所有观点仅代表原作者个人观点,绝不代表本站赞同其观点或证实其描述。

发表评论

登录后才能评论