主页 > imtoken钱包ios下载链接 > 比特币中的密码学:哈希函数的五个属性和挖掘原理

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

imtoken钱包ios下载链接 2023-03-26 07:29:23

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

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

先说一下hash函数的特点:

单向哈希函数,也称为哈希函数。

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

散列函数不需要知道输入的信息代表什么,也不需要知道信息有多长,只要输入的散列函数输出一个固定长度的位值即可。比如非常有名的SHA256哈希函数,输入任意值会得到256位的0,1.输入“三国志”或者直接输入字母a,数据就会得到256位长度。

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

这一点经常被大家忽略。似乎被忽视是一件很平常的事情。其实这点同样重要,因为单向哈希的计算速度非常快,这样才能保证加密或验证的速度。

第三个特点,防碰撞特性(Collisionresistance)

X≠y,H(x)=H(y) 输入空间远大于输出空间。例如,一个 256 位的哈希值意味着输出空间是 2^256,输入是无限可能的,输出是固定长度的。

但是黄金比特币数学模型,没有很好的方法来找到一个 x 可以使 H(x) 等于右边的值。

可以遍历所有的输入找到这个值,是不是叫做brute-force蛮力破解?

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

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

第四个特点:隐藏或单向

哈希函数的计算过程是单向不可逆的。x 推出 H(x),但是没有办法反转它(单向),即哈希值没有透露输入 x 的信息。也就是说,x的信息是隐藏的,也就是隐藏。

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

使用第三和第四个特性可以做出非常有趣的应用场景。

就像预测某事一样。在现实世界中,预测和结果往往密切相关。比如三国时期,曹操去找当时的人物鉴定专家徐绍,让他看看自己是什么材料。这很难说他的评论是否准确,或许是因为这条评论影响了曹操的心理,他就朝着这个方向发展,成为了一个自我验证的预言。因此,很难判断预测是否真的准确。

一个更简单的例子是,一位有影响力的股票分析师今天预测明天股价是否会上涨。那么,如果他公开表示币价,可能会影响币价。

那么如何证明他确实是准确的呢?要求他将股票评论信息写在纸上或保存在电脑中,但要求是第二天开市后,他不能偷偷修改内容,这样他就不用担心预测影响股票价格。所以现在需要做的只有一件事:确保他没有篡改他已经写的东西。

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

其实实际的输入空间并不是很大,输入也不够随机。我担心有人会组合和排列上升和下降等词汇,并找到这个x。为了保证安全,会添加一个nonce随机数。公式如下。

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

意思是预测结果信息x后面跟着一个随机数,一起得到hash。

第 5 点:益智友好

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

因此,结合隐蔽性和解谜友好性这两个特点,知道输入信息,不知道哈希值是什么,可以快速计算,但不能预先判断;知道哈希值也无法知道输入值是什么。定向计算非常非常困难,只能是蛮力的。

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

比特币中的密码学:哈希函数的五大特性和挖矿原理

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

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

H(块头+随机数)≤目标

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

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

挖矿的基本思想就是由以上信息推导出来的。在比特币挖矿的过程中,其实就是找nonce,也就是在确定了输出范围之后再找输入值。H(块头+随机数)≤目标

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

然后你发布这个信息,其他矿工看到你的nonce值就去hash,很快就知道你的nonce合适,可以满足目标的要求。这是使用哈希函数的计算快速特性(第二个特性)的地方。

本文总结了奇异哈希函数的特点,也称为哈希函数,它是许多区块链应用的基础,也是比特币加密挖掘的基本原理。正如文章开头所提到的,比特币使用的密码学除了功能性功能外,还有一个非常重要的内容:数字签名。我们很快就会谈到这一点。

比特币中的密码学:哈希函数的五大特性和挖矿原理

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

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