3 回答

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

TA貢獻(xiàn)1785條經(jīng)驗(yàn) 獲得超8個(gè)贊
編輯:這樣做的目的是形成一種區(qū)塊鏈,盡管這個(gè)術(shù)語現(xiàn)在已經(jīng)被過度使用了。這是出于完整性目的,而不是工作證明。這個(gè)想法是對(duì)跟隨者節(jié)點(diǎn)上的塊進(jìn)行散列,將散列合并到集群領(lǐng)導(dǎo)者上的散列中,以獲得代表整個(gè)鏈的散列,然后將其添加到要散列的新塊中。
這看起來像merkle tree
Merkle 樹是一種基于哈希的數(shù)據(jù)結(jié)構(gòu),是哈希列表的推廣。它是一種樹結(jié)構(gòu),其中每個(gè)葉節(jié)點(diǎn)是數(shù)據(jù)塊的哈希值,每個(gè)非葉節(jié)點(diǎn)是其子節(jié)點(diǎn)的哈希值。通常,Merkle 樹的分支因子為 2,這意味著每個(gè)節(jié)點(diǎn)最多有 2 個(gè)子節(jié)點(diǎn)。
Merkle 樹在分布式系統(tǒng)中用于高效的數(shù)據(jù)驗(yàn)證。它們非常高效,因?yàn)樗鼈兪褂蒙⒘卸皇峭暾募?。哈希是?duì)比實(shí)際文件本身小得多的文件進(jìn)行編碼的方法。目前,它們的主要用途是在點(diǎn)對(duì)點(diǎn)網(wǎng)絡(luò)中,例如 Tor、比特幣和 Git。

TA貢獻(xiàn)1812條經(jīng)驗(yàn) 獲得超5個(gè)贊
嘗試將已有的 SHA256 哈希值放入字符串中。然后使用 SHA256 或您選擇的算法對(duì)該字符串進(jìn)行哈希處理?;蛘?,您可以將原始數(shù)據(jù)塊串在一起,然后對(duì)其進(jìn)行哈希處理。但我認(rèn)為“散列哈希值”更快更干凈。
- 3 回答
- 0 關(guān)注
- 217 瀏覽
添加回答
舉報(bào)