一、小段子
客官(小姐姐):哎,小二,我看之前有篇文讲到Merkle Tree,听说你要讲Merkle Tree,这Merkle Tree究竟是什么?
小二(我): 嗯,是的,小姐姐今天真幸运,我现在就给你细细讲解。
客官(小姐姐):等等,我先搬好小凳子,好了,你说吧。
小二(我):........
二、这Merkle Tree究竟是什么
在我说Merkle Tree 之前,我想讲讲另外一个与merkle tree 息息相关的Hash。
1.hash
hash(哈希), 我们通常把哈希函数简称哈希(hash),所以这个hash事实上是一个函数,它也叫做散列函数,在百度百科的定义就是:
把任意长度的输入(又叫做预映射pre-image)通过散列算法变换成固定长度的输出,该输出就是散列值。这种转换是一种压缩映射,也就是,散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,所以不可能从散列值来确定唯一的输入值。简单的说就是一种将任意长度的消息压缩到某一固定长度的消息摘要的函数。
使用hash比较突出的特征就是如果输入稍微有不同,那么产生的hash值就有巨大的变化,因为有这个特征,所以可以用来对文件进行完整性校验;由于不同的输入可能会产生相同的输出,所以也很难通过产生的hash值来唯一确定输入,也