3 回答

TA貢獻1804條經驗 獲得超2個贊
如果您嘗試重新創建已分割為塊(例如大小為 10MB)的大型負載(例如 1GB 文件)的哈希值,則需要對整個集合計算哈希值(MD5、SHA-256 等)。因此,使用此示例,您無法添加100 個分塊哈希來重新創建原始文件的哈希。然而...
您可以為每個塊發送 2 個值:
單個塊的哈希值(就像您現在所做的那樣)
中間哈希狀態,當您的服務掃描文件以創建每個塊有效負載時:在塊的開頭和結尾
當塊流入時,可以驗證塊末尾的哈希狀態的接縫與塊開頭的N
哈希狀態的接縫是否匹配N+1
。
最終塊的最終哈希狀態將是整個有效負載的哈希。
為什么會這樣呢?因為可以在接收到文件塊時實時計算哈希值,而不是作為一個單獨的耗時過程,在接收到所有文件塊之后。

TA貢獻1785條經驗 獲得超8個贊
編輯:這樣做的目的是形成一種區塊鏈,盡管這個術語現在已經被過度使用了。這是出于完整性目的,而不是工作證明。這個想法是對跟隨者節點上的塊進行散列,將散列合并到集群領導者上的散列中,以獲得代表整個鏈的散列,然后將其添加到要散列的新塊中。
這看起來像merkle tree
Merkle 樹是一種基于哈希的數據結構,是哈希列表的推廣。它是一種樹結構,其中每個葉節點是數據塊的哈希值,每個非葉節點是其子節點的哈希值。通常,Merkle 樹的分支因子為 2,這意味著每個節點最多有 2 個子節點。
Merkle 樹在分布式系統中用于高效的數據驗證。它們非常高效,因為它們使用散列而不是完整文件。哈希是對比實際文件本身小得多的文件進行編碼的方法。目前,它們的主要用途是在點對點網絡中,例如 Tor、比特幣和 Git。

TA貢獻1812條經驗 獲得超5個贊
嘗試將已有的 SHA256 哈希值放入字符串中。然后使用 SHA256 或您選擇的算法對該字符串進行哈希處理?;蛘?,您可以將原始數據塊串在一起,然后對其進行哈希處理。但我認為“散列哈希值”更快更干凈。
- 3 回答
- 0 關注
- 201 瀏覽
添加回答
舉報