hash算法有哪几种 hash值的计算方式

好的哈希算法有什么特点?注意,有许多散列算法,如MD5、SHA-1、SHA-2等。、SHA-256和BTC的RIPEMD-160等。至少有两个特点:1.对于任何两个不同的输入,应该产生不同的输出。(这叫防撞)2.向前计算很容易,而从输出向后输入非常困难。只能靠暴力猜测。(这被称为不可逆性)看第一个...

好的哈希算法有什么特点?

注意,有许多散列算法,如MD5、SHA-1、SHA-2等。、SHA-256和BTC的RIPEMD-160等。

至少有两个特点:

1.对于任何两个不同的输入,应该产生不同的输出。(这叫防撞)

2.向前计算很容易,而从输出向后输入非常困难。只能靠暴力猜测。(这被称为不可逆性)

看第一个特点:防撞。

一个好的哈希算法应该为任意两个不同的输入产生不同的输出。

事实证明,MD5和SHA-1并不是好的哈希算法,因为王小云院士等人已经能够找到两个不同的输入,并产生相同的哈希输出。详见相关第1、2条。

如何直观的理解这个特性?

首先,这个哈希算法的输出必须有一定的长度。如果长度不够,肯定会有重复的。比如假设一个哈希算法,输出只有1位,输出不是0就是1。在运行两三次后,是否可能找到输入不同但输出相同的结果?如果输出只有两位数,那么这个哈希只有四种可能的输出,00、01、10和11。在四次或五次运行后,有可能找到不同输入的相同输出吗?

所以MD5是128位长,SHA-256是256位长!

其次,需要保证哈希值在整个输出空中随机均匀分布。而如果输入稍有不同,输出就会完全不同。

这样就有了ID效应,哈希就像每个输入的不同“指纹”。例如,如果您散列1000万个不同的文件,并且每个文件都获得一个唯一的散列值,您可以将此视为文件的ID。每个ID指的是一个唯一的文件。如果你遇到了另一个ID相同的文件,说明你遇到了相同的文件。

还是那句话,要明白输出空很大。

对于RSA-256这样的算法,输出位数是256,所以会有10 ^ 78个可能值(也就是2 ^ 256)。这是一个多大的数字?

有些人估计整个地球(不仅仅是海滩上,而是所有的)的沙量大约是7 * 10 ^ 21,不到10 ^ 22。

宇宙中行星的数量大致不超过7 * 10 ^ 22,但少于10 ^ 23。

如果给它两个不同的输入,它产生相同输出的概率比下面的例子小得多:

你随机选择了一颗星球上的一粒沙子,另一个人随机选择了一颗没有你影响的星球上的一粒沙子。结果你们俩都选择了同一粒沙子!那么你们都选择了沙子里的同一个原子!

现在看看第二个特征:不可逆性

一个好的哈希算法需要快速的正向计算,而逆向计算几乎是不可能的。

例如,我现在有一个BTC私钥,其形式为:

5 hvrdrdq 9 epjtcjhxuctu 9 vujydzuz 1????????????????***

为了保密,我用16个字?相反。

该私钥的MD5值计算为
630 a 0 ccec 43d 49095027 b 224 ea 0 F2 b 317。

那么全世界的黑客都可以通过破解MD5得到我的私钥吗?

答案是:按照现在的能力,没有。

黑客的做法只能是,继续尝试这16个?可能的数字组合,计算其MD5值,希望有一天也能计算出同样的MD5值。

但这种暴力猜测需要很长时间。(粗略估计,以现在的技术,如果全世界的黑客联合起来,拥有全世界BTC矿业一样的计算能力,至少需要5年时间。)

那么,你在做什么采矿?

2021年6月13日18时09分30秒,BTC矿工挖出一个哈希:

000000000000000000009813 c8 a3 b 95 E3 a 75d 878419547 b 7 Fe 4 DD 71 f 9 DC 71 da 72

看这杂碎多漂亮!它前面有多少个零!

上面是用十六进制表示的,所以,每个0其实都是二进制的0000,所以上面的哈希前面是19*4=76个二进制的0!

这个HASH是一个块的HASH(严格来说是这个块头的HASH)。

这个漂亮的最近10分钟出一个。

矿工们哈希了多少次才做出这么漂亮的哈希?

我不知道。反正一个出现平均要2.76次。你觉得做了多少次了?

他们想挖这个干什么?

图BTC由此块授予。

挖到这一块的矿工(大概是很多人一起挖的)拿到了6.541***549 BTCs,其中6.25是系统奖励,其余是赚来的费用。

哦,我大概理解HASH。什么是街区?

现在让我们来谈谈区块链的始祖——BTC的工作原理。

一遍看不懂,就看两遍。如果第二遍听不懂,第三遍就大声读。

一般都能看懂。

1.互联网中的几个节点(节点就是电脑!)同时运行BTC软件。这些软件都是开源的,任何人都可以下载运行(本文提到的节点是指全功能节点,目前全球大概有1000个左右)。

2.如果人们要发起BTC转移(即交易),让一个节点在互联网上广播转移信息,这个交易很快就会扩散到整个网络的每一个节点。每个节点都会检查自己收到的事务是否符合逻辑(比如有没有那么多钱要转),如果不符合,就会丢弃事务。

转会是:张三送1 BTC给李四,王五送0.1 BTC给刘钊,以此类推。差不多就是这个意思。每一次转移也称为一次交易。

3.平均每隔一段时间(平均10分钟),网络中的一个节点就会率先打包一个块,里面包含了这段时间的所有交易数据。这个块会广播到全网,每个节点都会收到这个块(大小约1M)。

3a:打包是有条件的,这个块头的HASH值一定要好看。

3b:平均10分钟才出一个,这是挖矿难度造成的。难度动态调整,两周一次,让全网平均每10分钟就能挖出一块。

在完全去中心化的网络中,难度调整是如何进行的?方法是:每2016块,所有节点会自发调整难度(写在代码里)。新难度通过对比最后2016块和20160分钟(两周)进行调整。如果用时少于20160分钟,调高难度,反之,调低难度。难度可以简单理解为哈希值前面需要多少个零。

3c:每隔10分钟,世界上就会有很多交易,都在等着打包(最后只有分块打包的交易才会被人认可)。每一个尝试打包的矿工,把自己收到的尚未打包的事务放在一个块中(由于块大小的限制,一个普通的块可以容纳2000多个事务),然后通过填充块中的随机数区域来计算HASH,以求找到一个好看的HASH(如果满足难度,就叫好看)。如果找到了,就叫打包成功(也就是挖矿成功),赶紧播。

3d:每收到一个广播块,每个节点检查该块是否满足块的要求(至少哈希要好看!),如果是,保存这个块,然后开始尝试获取下一个块(也就是继续挖掘),将接收到的但尚未打包的事务打包到下一个块中取出。

4.所有节点都在争先恐后地打包,因为谁能正确打包就能获得BTC奖励。

4a:每成功一次,包装商将获得几个BTC奖励。刚开始是50块奖励,每21万块(4年左右)奖励减半,所以后来是25,12.5,现在是6.25。到2140年,就没钱挖了。

4b:其实矿工不仅可以获得系统奖励,还可以分块获得手续费。

5.每个节点收到该块后,如果验证正确,它将接受该块并将其附加到自己的区块链。

5a:由于每个节点都在不断地与其他节点同步,所以每个节点(全功能节点)都保存着从第一块到当前块的数据(目前已经生成了近70万块)。

5b:块头会包含块内所有事务的merkle根(其实也是哈希计算)。如果块中的事务被篡改,您可以通过计算merkle根并将其与标头的merkle根进行比较来找到篡改。

5c:一个块的头也会包含前一个块的头的HASH值(可以简称为块的HASH)。这样可以验证最后一个块是否完整正确(因为任何数据错误,都做不出好看的HASH)。您可以从最新的块一直追溯到创建块(第一个块),以确保没有数据被更改。

5d:在整个区块链上,任何一个块被篡改一点点,这个块的HASH值就不再是好看的HASH,后续块的HASH也不再好看。任何明眼人都会知道数据是错误的。而每一个好看的HASH都是由全世界的若干矿工挖出来的,用了若干矿机,花了若干电费。试图篡改区块的个人或组织不具备如此强大的能力。

标签

现在,你了解哈希,挖掘和为什么区块链是如此防篡改吗?

让我简单总结一下:

HASH容易计算,反过来就不容易了;投入变化小,产出变化大;对于一个好的哈希算法,不同的输入肯定会是不同的输出,不用担心碰撞;哈希值可以被视为ID;通过比较HASH,可以判断输入是否被更改过。

挖掘的目的是为了给一个块找一个好看的HASH,也就是前几位为0的HASH;无论挖掘多少个节点,难度都可以自动简单调整,这样10分钟左右就能找到一个好看的HASH;每个块都将其漂亮的散列放在下一个块的开头;每个节点记录所有块的数据,它可以很容易地验证所有块没有被改变;如果有人想更改历史街区的数据,那就要用老鼻子了!

本文来自傲娇小伙子投稿,不代表舒华文档立场,如若转载,请注明出处:https://www.chinashuhua.cn/24/635834.html

打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
() 0
上一篇 07-16
下一篇 07-16

相关推荐

  • 皮料用量尺寸计算公式 详解皮料采购计算攻略

    1.皮革材质可分为54寸和36寸。1英寸= 2 . 54厘米54英寸x 2.54厘米= 137.16厘米36英寸x 2.54厘米= 91.44厘米一般实际利用率135cm,一般实际利用率90cm。常宽1y = 54英寸x 91.41cm厘米= 12339(135厘米)1y = 36英寸x 91.41cm厘米= 8226(90厘米)2.工具间距:皮革打孔时,要求刀具间

    2023-07-29 03:46:01
    716 0
  • 投入产出比怎么计算(投入产出比计算公式详解)

    投入产出比是衡量投资经济效果的静态指标。那么如何计算投入产出比呢?正常的投入产出比是多少?别急,在这篇文章里,你会看到投入产出比的计算公式以及提高的方法。一、投入产出比是什么意思?投入产出比是指一个项目投入的全部资金与该项目周期内产生的全部工业增加值的比值

    2023-07-27 19:18:01
    711 0
  • bmi计算公式详细介绍

    1、1BMI的计算公式体质指数BMI=体重kg身高^2mEX70kg175175=2286 2BMI指数即身体质量指数,简称体质指数又称体重,英文为Body Mass Index,简称BMI,是用体重公斤数除以身高米数;bmi的计算方法是用体重公斤数除以身高米数平方得出的数字,这是目前国际上常用的衡量人体胖瘦程

    2023-07-27 10:00:01
    735 0
  • 微信公众号流量主收益怎么计算 流量主收益计算法及开通条件

    微信是怎么赚钱的?开通流量是赚钱的方式之一。开放后只需要发布内容,就可以获得收益。是目前微信官方账号最简单的赚钱方式。开放条件也很容易实现。它只需要500个粉丝。满足条件后,可在后台左侧【流量主】自行申请开通。微信官方账号中微信流量的主要收入是多少?边肖测试

    2023-07-27 00:29:01
    338 0

评论列表

联系我们

在线咨询: QQ交谈

邮件:admin@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信