亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何組合 sha 哈希值?

如何組合 sha 哈希值?

Go
喵喵時光機 2023-07-31 15:36:21
我已經訂購了數據塊,每個數據塊都用 sha256 單獨進行了哈希處理。我想將這些哈希值組合成一個 sha256 哈希值。我應該將哈希值作為數據輸入 sha256 中,還是從數學/加密貨幣的角度來看,還有其他更好的方法嗎?這似乎是一個微不足道的問題,但當涉及到加密貨幣時,直覺往往是錯誤的。編輯:這樣做的目的是形成一種區塊鏈,盡管這個術語現在已經被過度使用了。這是出于完整性目的,而不是工作證明。這個想法是對跟隨者節點上的塊進行散列,將散列合并到集群領導者上的散列中,以獲得代表整個鏈的散列,然后將其添加到要散列的新塊中。這有點奇怪,因為它是一個分布式系統,所以“全鏈哈?!蓖ǔS悬c過時,所以我知道當在該節點創建塊時,代表該鏈的哈希是什么,正如該節點所知,但可能有在該特定哈希上“掛接到鏈上”的幾個塊,然后將它們排序并組合到系統哈希中,最終將其添加到新塊中。我正在使用 Go,如果這很重要的話。
查看完整描述

3 回答

?
慕婉清6462132

TA貢獻1804條經驗 獲得超2個贊

如果您嘗試重新創建已分割為塊(例如大小為 10MB)的大型負載(例如 1GB 文件)的哈希值,則需要對整個集合計算哈希值(MD5、SHA-256 等)。因此,使用此示例,您無法添加100 個分塊哈希來重新創建原始文件的哈希。然而...

您可以為每個塊發送 2 個值:

  • 單個塊的哈希值(就像您現在所做的那樣)

  • 中間哈希狀態,當您的服務掃描文件以創建每個塊有效負載時:在塊的開頭和結尾

當塊流入時,可以驗證塊末尾的哈希狀態的接縫與塊開頭的N哈希狀態的接縫是否匹配N+1。

最終塊的最終哈希狀態將是整個有效負載的哈希。

為什么會這樣呢?因為可以在接收到文件塊時實時計算哈希值,而不是作為一個單獨的耗時過程,在接收到所有文件塊之后。

查看完整回答
反對 回復 2023-07-31
?
慕的地10843

TA貢獻1785條經驗 獲得超8個贊

編輯:這樣做的目的是形成一種區塊鏈,盡管這個術語現在已經被過度使用了。這是出于完整性目的,而不是工作證明。這個想法是對跟隨者節點上的塊進行散列,將散列合并到集群領導者上的散列中,以獲得代表整個鏈的散列,然后將其添加到要散列的新塊中。

這看起來像merkle tree

Merkle 樹是一種基于哈希的數據結構,是哈希列表的推廣。它是一種樹結構,其中每個葉節點是數據塊的哈希值,每個非葉節點是其子節點的哈希值。通常,Merkle 樹的分支因子為 2,這意味著每個節點最多有 2 個子節點。

Merkle 樹在分布式系統中用于高效的數據驗證。它們非常高效,因為它們使用散列而不是完整文件。哈希是對比實際文件本身小得多的文件進行編碼的方法。目前,它們的主要用途是在點對點網絡中,例如 Tor、比特幣和 Git。

查看完整回答
反對 回復 2023-07-31
?
ABOUTYOU

TA貢獻1812條經驗 獲得超5個贊

嘗試將已有的 SHA256 哈希值放入字符串中。然后使用 SHA256 或您選擇的算法對該字符串進行哈希處理?;蛘?,您可以將原始數據塊串在一起,然后對其進行哈希處理。但我認為“散列哈希值”更快更干凈。



查看完整回答
反對 回復 2023-07-31
  • 3 回答
  • 0 關注
  • 201 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號