http://www.fsfzs.com

哈希函数就是宇宙级扭蛋机

我们知道区块链中的信息块,是通过加密方式连接在一起。

那么,区块链是如何加密?如何链接?

为了弄清楚这些知识,我们需要一些基础概念: 函数、哈希函数和公钥密码学。今天先讲讲函数和哈希函数。

有的同学会说,看到数学公式就头疼。但是这一部分并不难,不信?瞧瞧呗。

函数

哈希函数,首先它是一个函数。那么,什么是函数?

抽象地说,函数是一种——接受输入,并根据输入的内容产生输出的东西。

数学术语中,函数是一组输入和一组输出之间的关系,其中每个输入只与一个输出有关。

函数通常写为 f,输入通常表示为 x。
比如:
f(x)= x + 2
函数:? f(x)
输入:x
输出:x + 2。
如果我们输入2,会得到4。
如果我们输入3,会得到5。
依此类推。

函数就像小朋友玩的扭蛋机。
函数 f? (x):扭蛋机
输入 x:十个1元硬币
输出:扭蛋1个
如果我们塞入20个1元硬币,那么得到两个扭蛋。依此类推。

哈希函数就是宇宙级扭蛋机

什么是哈希函数?

哈希函数,是输入任意长度的字符串,都可以产生固定长度输出的函数。

做个实验。网站:https://anders.com/blockchain/hash.html 可以产生哈希值。

试一试,输入不同的值,会得到不同的输出,但是输出长度一样。

比如:
输入:爱莉莎
输出:73abcafdf5b6f5de5a217da2416c4ca1eb35aab10be66eec4ab75867d1ba5abe
如果更改输入数据,则会得到一个新的哈希值。

哈希函数就是宇宙级扭蛋机

输入:elizachen
输出:c1a14f43c993ee4c648bac6831e3798cf41efb0841b1b929a63ddb8ddbdb5b8e

哈希函数就是宇宙级扭蛋机

改回 爱莉莎,那么输出又恢复成 73abcafdf5b6f5de5a217da2416c4ca1eb35aab10be66eec4ab75867d1ba5abe。

输入不同长度的字符(比如 “爱莉莎” 和 “elizachen”字符长度不一样),得到的输出,长度一样。

qq抢红包群号免费加入币采用的SHA-256,产生的输出长度,就是256bits,32个字节(一个字节8bits,所以是256/8 = 32字节)。

加密哈希函数

加密哈希函数,是特殊的哈希函数。为了达到密码安全,需要满足下面的特性:

1. 确定性

同一个输入生成同一个的输出。无论用哈希函数计算多少次,都会得到相同的结果。

可以去https://anders.com/blockchain/hash.html? 试一试。

而且一个输入,产生唯一一个输出,因此,我们也说,哈希函数为你输入的数据,生成了——数字指纹。

2. 隐秘性

同时,哈希函数被称为:单向函数。单向函数的意思就是:你可以从输入得到输出,但如果只有输出,几乎不能找出输入。

为什么说几乎不能? 因为通过输出,得到输入值的唯一方法是——“暴力破解法”。

暴力破解:任意选择一个输入,计算其输出(哈希值)。然后与现有的输出对比,看看是否一致。不断重复这一过程,直到找到一个输入,它的输出值与现有输出值一致。

继续拿扭蛋机举例:
但如果扭蛋机原来装了50个硬币,我再投入10个,共计60个硬币,如何找到我塞的那10个硬币呢?

(为了实验,我在我的10个硬币上,都画了一个红点,并请工作人员打开扭蛋机,拿出了里面的硬币。)

最好的情况:1次。 一把抓10个,全部有红点,第一次就找到了。但这种情况几乎不可能的。
最坏的情况:50次,才得到答案,也就是翻了50个都不是,后面10个才是。
平均的情况:平均情况下,我们要尝试 50 / 2 = 25 次之后才能找到答案。
似乎也可以接受。

但是,如果我们处理的是256bits的哈希值呢?

最好的情况:1次。第一次就找到了答案,这种情况比中500万还难。

最坏的情况:尝试 2^256 -1 次。就是试过所有可能的输入。

平均的情况: 尝试 2^256 / 2 = 2^255 次 = 5.7896045e+76。 这可是个天文数字!如果哈希函数是一台扭蛋机,那就被塞了5.7896045e+76枚硬币,那是像宇宙那样大的扭蛋机吧!想要找出我塞的硬币?不可能!

qq抢红包群号免费加入币使用的SHA-256 哈希函数,需要平均计算5.7896045e+76次,才有可能得到正确的输入,这几乎是不可能的。

3. 无碰撞

对于哈希函数H,无法找到两个值x和y(x≠y),使得H(x)=H(y)。即发生下面这种情况。

哈希函数就是宇宙级扭蛋机

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。