如何组合 sha 哈希值?

我已经订购了数据块,每个数据块都用 sha256 单独进行了哈希处理。我想将这些哈希值组合成一个 sha256 哈希值。我应该将哈希值作为数据输入 sha256 中,还是从数学/加密货币的角度来看,还有其他更好的方法吗?这似乎是一个微不足道的问题,但当涉及到加密货币时,直觉往往是错误的。

编辑:这样做的目的是形成一种区块链,尽管这个术语现在已经被过度使用了。这是出于完整性目的,而不是工作证明。这个想法是对跟随者节点上的块进行散列,将散列合并到集群领导者上的散列中,以获得代表整个链的散列,然后将其添加到要散列的新块中。

这有点奇怪,因为它是一个分布式系统,所以“全链哈希”通常有点过时,所以我知道当在该节点创建块时,代表该链的哈希是什么,正如该节点所知,但可能有在该特定哈希上“挂接到链上”的几个块,然后将它们排序并组合到系统哈希中,最终将其添加到新块中。

我正在使用 Go,如果这很重要的话。


喵喵时光机
浏览 148回答 3
3回答

慕婉清6462132

如果您尝试重新创建已分割为块(例如大小为 10MB)的大型负载(例如 1GB 文件)的哈希值,则需要对整个集合计算哈希值(MD5、SHA-256 等)。因此,使用此示例,您无法添加100 个分块哈希来重新创建原始文件的哈希。然而...您可以为每个块发送 2 个值:单个块的哈希值(就像您现在所做的那样)中间哈希状态,当您的服务扫描文件以创建每个块有效负载时:在块的开头和结尾当块流入时,可以验证块末尾的哈希状态的接缝与块开头的N哈希状态的接缝是否匹配N+1。最终块的最终哈希状态将是整个有效负载的哈希。为什么会这样呢?因为可以在接收到文件块时实时计算哈希值,而不是作为一个单独的耗时过程,在接收到所有文件块之后。

慕的地10843

编辑:这样做的目的是形成一种区块链,尽管这个术语现在已经被过度使用了。这是出于完整性目的,而不是工作证明。这个想法是对跟随者节点上的块进行散列,将散列合并到集群领导者上的散列中,以获得代表整个链的散列,然后将其添加到要散列的新块中。这看起来像merkle treeMerkle 树是一种基于哈希的数据结构,是哈希列表的推广。它是一种树结构,其中每个叶节点是数据块的哈希值,每个非叶节点是其子节点的哈希值。通常,Merkle 树的分支因子为 2,这意味着每个节点最多有 2 个子节点。Merkle 树在分布式系统中用于高效的数据验证。它们非常高效,因为它们使用散列而不是完整文件。哈希是对比实际文件本身小得多的文件进行编码的方法。目前,它们的主要用途是在点对点网络中,例如 Tor、比特币和 Git。

ABOUTYOU

尝试将已有的 SHA256 哈希值放入字符串中。然后使用 SHA256 或您选择的算法对该字符串进行哈希处理。或者,您可以将原始数据块串在一起,然后对其进行哈希处理。但我认为“散列哈希值”更快更干净。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go