我们告诉区块链中的信息块,是通过加密方式相连在一起。那么,区块链是如何加密?如何链接?为了弄清楚这些科学知识,我们必须一些基础概念: 函数、哈希函数和公钥密码学。
今天再行讲讲函数和哈希函数。有的同学会说道,看见数学公式就困惑。但是这一部分并难于,不信?瞧瞧呗。
函数哈希函数,首先它是一个函数。那么,什么是函数?抽象地说道,函数是一种——拒绝接受输出,并根据输出的内容产生输入的东西。数学术语中,函数是一组输出和一组输入之间的关系,其中每个输出只与一个输入有关。
函数一般来说写为 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”字符长度不一样),获得的输入,长度一样。
比特币使用的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枚硬币,那是像宇宙那样大的扭蛋机吧!想找到我里斯的硬币?不有可能!比特币用于的SHA-256 哈希函数,必须平均值计算出来5.7896045e+76次,才有可能获得准确的输出,这完全是不有可能的。3. 无撞击对于哈希函数H,无法寻找两个值x和y(x≠y),使得H(x)=H(y)。
即再次发生下面这种情况。
本文关键词:8297国际官网游戏
本文来源:8297国际官网游戏-www.excellentsushi.com