请选择 进入手机版 | 继续访问电脑版

XAG Fans

 找回密码
 立即注册
搜索
查看: 1653|回复: 3

技术帖:哈希(Hash)和哈希树(Merkle tree)

[复制链接]

107

主题

216

帖子

1240

积分

超级版主

Rank: 8Rank: 8

积分
1240
发表于 2020-5-24 23:17:48 | 显示全部楼层 |阅读模式
本帖最后由 trump 于 2020-5-24 23:19 编辑

        哈希函数(英语:Hash function)又称散列函数,是一种从任何一种数据中创建小的数字“指纹”的方法。散列函数把消息或数据压缩成摘要,使得数据量变小,将数据的格式固定下来。该函数将数据打乱混合,重新创建一个叫做散列值/哈希值(hash values,hash codes,hash sums,或hashes)的指纹。散列值通常用一个短的随机字母和数字组成的字符串来代表。好的散列函数在输入域中很少出现散列冲突。
        散列函数都有如下一个基本特性:如果两个散列值是不相同的(根据同一函数),那么这两个散列值的原始输入也是不相同的。这个特性是散列函数具有确定性的结果,具有这种性质的散列函数称为单向散列函数。但另一方面,散列函数的输入和输出不是唯一对应关系的,如果两个散列值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为“散列碰撞(collision)”,这通常是两个不同长度的输入值,刻意计算出相同的输出值。

        输入一些数据计算出散列值,然后部分改变输入值,一个具有强混淆特性的散列函数会产生一个完全不同的散列值。这一特点在区块链中被使用。要生成当前区块的加密散列,需要使用上一个区块的加密散列值。更改一个区块,下一个区块的散列值就需要重新计算,并导致之后所有的区块都需要重新计算一次。因此,一个个区块就这样串联起来,形成了一条链。这也就是区块链当中“链”的由来。
        一个设计优秀的加密散列函数是一个“单向”操作:对于给定的散列值,没有实用的方法可以计算出一个原始输入,也就是说很难伪造。利用这一特点,发信人通过将原消息和散列值一起发送,可保证数据的真实和完整。
        哈希树(hash tree;Merkle tree),在密码学及计算机科学中是一种树形数据结构,每个叶节点均以数据块的哈希作为标签,而除了叶节点以外的节点则以其子节点标签的加密哈希作为标签 。哈希树能够高效、安全地验证大型数据结构的内容。哈希树的概念由瑞夫·墨克于 1979 年申请专利,故亦称墨克树(Merkle tree)。

       哈希树的顶部为顶部哈希(top hash),亦称根哈希(root hash)或主哈希(master hash)。只要任一叶节点有变化,根哈希都会变。在比特币区块里,所有交易都按照Merkle Tree的格式组织起来,再跟区块头里的hashMerkleTreeRoot对应起来,就可以保证本区块交易信息的不可篡改。

来源:https://ultbbs.com/article/23



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

2

主题

6

帖子

29

积分

新手上路

Rank: 1

积分
29
发表于 2020-5-25 17:09:00 | 显示全部楼层
学习了,感觉有点高深。
回复

使用道具 举报

0

主题

234

帖子

477

积分

中级会员

Rank: 3Rank: 3

积分
477
发表于 2022-12-24 10:43:38 | 显示全部楼层
好好好好好好好好好好好好好好好好好顶
回复

使用道具 举报

0

主题

2

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2023-6-20 15:30:14 | 显示全部楼层
也许你现在仍然是一个人下班,一个人乘地铁,一个人上楼,一个人吃饭,一个人睡觉,一个人发呆。很多人离开另外一个人,就没有了自己。而你却一个人,度过了所有。
幸运时时彩走势图台湾宾果走势图SG飞艇走势图
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|瑞波基因论坛

GMT+8, 2023-10-4 11:16 , Processed in 0.119794 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, 日本XAG東京学会.

快速回复 返回顶部 返回列表