主页 > imtoken钱包安卓版手机下载 > 比特币中的密码学:哈希函数的五个特征和挖掘原理

比特币中的密码学:哈希函数的五个特征和挖掘原理

比特币是世界上第一个成功的加密货币,之前的尝试都没有像比特币那样有效地解决与货币相关的各种问题。

比特币本身就是密码学发展的产物。它是利用密码学中的“单向散列函数”和数字签名两项重要技术构建而成的。今天我们将重点讲解哈希函数的单向5个重要性质以及比特币挖矿相关的技术原理。

先说一下哈希函数的特点:

单向散列函数,又称散列函数。

第一个特点:输入可以是任意长度,输出是固定长度

散列函数不需要知道输入信息代表什么,也不需要知道信息有多长。只要输入的哈希函数是一个固定长度的位值。比如非常著名的SHA256哈希函数,输入任意值,输出为256位的0,1.输入一本《三国志》或者只输入一个字母a,输出为256-位数据。 .

第二个特点:计算hash值的速度比较快

哈希值下载_哈希值怎么用_交易所的哈希值是什么

这常常被大家忽略。因为单向哈希的计算速度非常快,所以可以保证加密或验证的速度。

第三个特性,抗碰撞性(Collisionresistance)

X≠y,H(x)=H(y) 输入空间远大于输出空间,比如256-bit的hash值表示输出空间有这么多2^256,输入为无限可能,并且输出是固定长度。

但是,目前没有很好的方法来找到 x 可以使 H(x) 等于右边的值。

可以通过遍历所有输入找到这个值,是不是叫做brute-force暴力破解,这就是所谓的矿机“哈希碰撞”的根源。

hash防冲突的目的是保证上传和下载的数据是一样的,但是稍微改变一下结果就差很多了。比如你输入的信息是“红楼梦”(当然电脑识别为0和1),然后你把A的100页第五句的逗号改成句号红楼梦,然后输出的hash值完全不一样,这是hash函数的一个很重要的特性。

但目前没有数学证据表明这种碰撞不会发生。 MD5 就是最好的例子,它以前非常安全。 ,不过后来找到了破解方法。

交易所的哈希值是什么_哈希值下载_哈希值怎么用

第四个功能:隐藏或单向

hash函数的计算过程是单向introduce H(x)到irreversible.x,但是没有办法逆向(单向),即hash值不泄露信息输入 x。也就是说x的信息是隐藏的,这也是隐藏的。

输入空间要足够大,取值要统一,这样就很难暴力破解了。

利用第三和第四个特性可以做出很多有趣的应用场景。

例如,预测事件。在现实世界中,预测和结果往往密切相关。比如三国时期,曹操去找当时的人事和法医专家徐绍,让他看看他是什么材料,徐绍评价曹操是“能干的大臣”。天下,乱世叛徒”。很难说他是否准确。或许是因为这番话影响了曹操的心理,他才往这个方向走。经过发展,它成为一个自我验证的预言。因此,很难判断预测是否真的准确。

一个更简单的例子是,一位有影响力的股市分析师今天预测明天的股价是否正确。增长,那么,如果他公开声明币价,可能会影响币价。

那么如何证明他确实准确呢?让他把股票评论信息写在纸上或者存到电脑里交易所的哈希值是什么,但是要求是第二天开市后,不能偷偷修改内容,这样就不用担心预测影响股票了价格。所以现在只有一件事要做:确保他没有篡改他写的内容。

哈希值下载_哈希值怎么用_交易所的哈希值是什么

然后,可以使用哈希算法,预测结果(信息)为x,查看x的哈希函数,公布哈希值,次日收市后发布x。如果你改变昨天的数据,hash就会改变。大家可以用hash来计算这个x,然后和昨天公布的hash值进行比较。

其实实际输入的空间并不是很大,而且输入的随机性也不够。词法语句被组合并排列以找到 x。为了保证安全,会添加一个nonce随机数。公式如下。

H(x丨丨nonce)nonce是一个随机数

表示预测结果信息x后跟一个随机数,一起得到hash。

第五点:益智友好

它是在不知道 H(x) 是什么的情况下看着 x 吗?无法从输入数据判断输出的样子。也就是说,知道输入信息,是不可能一眼看出输出的哈希值是什么的。谜题的友好性是值得的:你不能通过控制输入值 x 得到想要的输出值 H(x)。

因此,结合隐蔽性和解谜友好性两个特点,知道输入信息,不知道hash值是什么,可以快速计算,但无法提前判断;知道hash值,就无法知道输入的值是What,逆向计算非常非常难,只能蛮力。

哈希值怎么用_哈希值下载_交易所的哈希值是什么

所以如果你要输出的值落在某个范围内,比如小于某个值,计算机只能尝试一一猜测答案,看哪个输入计算出正好落在的输出值在你想要的范围内。

您想获得前 K 位为 0 的哈希值。您无法知道如何获得前面有这么多零的 x。

挖矿就是找一个nonce,就是这个随机数。

H(区块头随机数)≤target

这就是比特币挖矿的基本原理,就是通过hash碰撞来找到这个nonce,使其小于一个目标(比如32 0等)。块头(或块头)是指块头所包含的信息是所有矿工都知道的(例如版本、prehash、merkle root、ntimenbits等),所以谁抢先猜出nonce。

备注:在二进制世界中,因为每一位都是0或1,所以比值就是前面0的个数。前 32 位为 0,自然小于前 31 位。 0(第32位是1),所谓这个目标的比值是有限范围的,因为来自sha256的数字都是256位的二进制数(输出值定长的特点) hash函数),谁是前面的0个数,是一种很方便的方式来划定结果值的区域。很多人忽略了这一点,但其实是很基础的数学知识,值得注意。

哈希值怎么用_哈希值下载_交易所的哈希值是什么

挖矿的基本思路是从上面的信息。在比特币挖矿的过程中,其实就是找nonce,也就是在确定了输出范围之后再找输入值。 H(区块头随机数)≤target

当对输入值(各种信息nonce)进行hash时,得到的值符合目标范围。例如,前 35 个 0 就足够了。输入你猜到的值后,hash值的前40位全为零,那么就必须满足要求。其实前35个0满足条件。

然后你发布这个信息,其他矿工看到你的 nonce 值并去散列,他们很快就会知道。你的nonce是合适的交易所的哈希值是什么,可以满足目标的要求。这里用到了哈希函数计算速度快(第二个特点)。

本文总结了奇异散列函数,也就是散列函数。功能的特点,这是很多区块链应用的基础,也是比特币加密挖矿的基本原理。文章开头,除了函数函数,比特币使用的密码学还有一个很重要的内容:数字签名。这个我们很快就会讲到。

世界上所谓的区块链应用,其实有时使用比特币结构(默克尔树等)的数据,有时使用UTXO模型进行结算。有时称为可追溯性,有时称为合同。应用很多,不管是什么概念,大部分都需要用到Hash函数,利用Hash函数的5个特性中的一部分。

随着文章的深入讲解,关于比特币和行业的信息层出不穷,慢慢大家就明白为什么说哈希函数是比特币和区块链行业的基础了。