首页 > 编程知识 正文

哈希算法特性(比特币主要采用的加密算法是)

时间:2023-05-03 22:31:28 阅读:80952 作者:4351

比特币是世界上第一个加密货币,迄今为止的尝试并不能像比特币一样有效地解决货币方面的各种问题。

比特币本身是密码学发展的产物,是利用密码学中重要的“单向散列函数”和数字签名两种技术构建的。 今天我们将集中讨论单向散列函数的五个重要特性和比特币挖矿的相关技术原理。

首先说明zjdrjb函数的特性。

单向散列函数(one-wayhash function )俗称zjdrjb函数。

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

即使zjdrjb函数不知道输入信息表示什么意思,也不知道信息的长度有多长,只要输入hash函数,就会出现固定长度的位值。 例如,在非常有名的SHA256 zjdrjb函数中,无论输入什么值,都会出现256位的0和1。 只要输入一本《三国演义》,或者输入一个字符a,就会出现256位长度的数据。

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

这一点经常被忽视,但如果是众所周知的东西,似乎不介意。 其实,这一点也同样重要。 正因为单向zjdrjb的计算速度快,才能保证加密和验证的速度。

第三个特征是“碰撞防止特性”

Xy,h(x )=h ) y )输入空间远远大于输出空间。 例如,256位的zjdrjb值意味着输出空间为2^256的多,输入可以无限进行,输出为固定长度。

但是,现在没有发现一个x能得到h(x )等于右边的值的好方法。

也许可以遍历所有输入的东西来找到这个值。 被称为蓝牙暴力解读吗? 也就是说,它是现在矿山机械的所谓“zjdrjb碰撞”一词的来源。

zjdrjb防止冲突的用途是确保上传的数据和下载的数据相同,但结果一点一点地变差了。 例如,你输入的信息是《红楼梦》。 当然,计算机识别后会变成0和1。 然后,将逗号改为红楼梦第100页的第5个词,输出的散列值完全不同。 这就是zjdrjb函数非常重要的特性。

但是,collision resistance目前还没有从数学上证明不会发生这种冲突。 MD5是最好的例子,以前很安全,但我找到了破解方法。

第四个特征:被称为隐蔽性(Hiding )或单向) one-way

zjdrjb函数的计算过程是单向不可逆的。 x发出了h(x ),但是反复按压是没办法的(单向性),也就是说zjdrjb值没有泄露输入的x的信息。 也就是说x的信息被隐藏了,这也就是说被隐藏了。

输入空间足够大,值均匀,很难进行暴力破解。

可以利用第三和第四个特性,创造有趣的应用场景。

例如预测一件事。 现实世界的预测和结果往往有微妙的关系。 例如,三国时期,痴情的果汁专门去找当时的人物鉴定专家义不容辞的过去,展示自己是什么材料。 义坚的过去曾把痴情果汁评价为“治世能臣,乱世奸雄”,但这很难说是他评价的正确。 因为这个评价影响了痴情果汁的心理,所以他朝着这个方向发展,也许他朝着这个方向发展,所以很难判断预测是否真的正确。

更简单的例子是,有影响力的股东预测今天明天的股价是否会上涨,如果他公布货币价格,就有可能影响货币价格。

所以怎么表明他确实准确呢? 要求将股票信息写在纸上或保存在电脑上,但不能在第二天公布后偷偷修改内容。 这样的话,就不用担心预测会影响股价。 现在需要的只有一件事。 我保证没有篡改他已经写的内容。

那么,使用hash算法,预测的结果(信息)是x。 对于x zjdrjb,也可以公布散列值,第二天回收后再出x。 如果改变昨天的数据,混列就会发生变化。 任何人都可以用混列计算这个x和昨天发表的混列值并进行比较。

实际上,有人担心实际输入空间不是很大,输入不是随机的,而是把涨跌这样的词汇句组合在一起排列,找到这个x,为了确保安全性,放入nonce随机数。 公式表示如下:

hx丨noncenonce是随机数

意思是给预测的结果信息x加随机数,一起得到hash。

第五,谜题友好(puzzlefriendly ) )。

你是说看x不知道H(X )是什么吗? 这个根据输入数据,不能判断出是什么样的输出。 也就是说,您知道输入的信息,但一看就不知道输出的散列值是什么。 智力游戏友好度值得一提的就是这一点。 通过控制输入值x,无法得到期望的输出值h(x )

因此,综合隐蔽性和谜题友好性两个特征,即使知道输入信息也不知道zjdrjb值是什么,可以马上算出来,但不能事先判断; 即使知道zjdrjb值也不能知道输入值是什么,逆计算非常困难,只能暴力解读。

所以,如果想要输出的值在某个范围内,例如小于某个数值的情况下,计算机只能试着逐一推测答案,看看根据哪个输入计算出的输出值正好在想要的范围内。

必须得到散列值前面的k位为0。 我不知道前面是怎么得到这么多0的x的。

开采就是找到

nonce,就是这个随机数。

H(block header + nonce)≤target

这就是比特币挖矿的基本原理,就是zjdrjb碰撞去找到这个nonce,让他小于一个target(比如32个0等等)。Block header(或者block head)就是区块头包括的信息都是所有矿工都知道的信息(比如version,prehash,merkle root,ntimenbits等等信息),所以大家竞争的是谁先猜出来nonce。

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

挖矿的基本思想就是来自上述的信息。在比特币中的挖矿的过程里实际上就是去找nonce也就是确定了输出范围后,去找输入的值。H(block header + nonce)≤target

当输入的值(各种信息+nonce)进行hash运算后得到的值符合target的范围,比如说前面35个0就可以了,你猜出来的值输入后得到hash值前面40个都是零,那么肯定符合要求,实际上前面35个0就满足条件了嘛。

然后你把这个信息公布出去,别的矿工看到你的nonce值,也去hash一下,很快就知道你这个nonce是合适的,可以满足target的要求。这里就用到了zjdrjb函数的计算速度快的特性(第二个特性)。

本文总结了单数散列函数也就是zjdrjb函数的特性,这就是很多区块链应用的基础以及比特币加密挖矿的基本原理。文章开头说过,比特币运用的密码学除了函数函数,还有一个非常重要的内容是:数字签名。这个我们很快就会讲到。

目前世界上所谓的区块链落地应用,其实有时候用的是比特币的数据结构(gddxx树等),有时候用的是UTXO模型来结算。有的时候说是溯源,有的时候说是合约。很多的应用出来,不管是什么样的概念,多数都要用到zjdrjb函数,利用zjdrjb函数5种特性中的一部分。

随着文章讲解的深入,关于比特币,关于行业的信息都在展开,慢慢的大家更能明白,为什么说zjdrjb函数是比特币和区块链行业的基础了。

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。