2011-05-03 70 views
2

如果我知道某些數據的兩個(或多個)部分的哈希,我可以計算這些哈希中的完整數據的哈希值嗎?如果我知道某些數據的兩部分哈希,我可以計算這些哈希中的完整數據的哈希值嗎?

哪種散列類型可以做到這一點? SHA1,SHA256,MD5? (散列的安全性是不是我的使用情況很重要。)

data0 = '0123' 
data1 = '45678' 
all_data = data0 + data1 
hash0 = hash(data0) 
hash1 = hash(data1) 

是否存在FN這樣

hash(all_data) == fn(hash0, hash1) 

FN是否存在MD5,SHA1或SHA256?

謝謝,

Chris。

+0

如果那樣,不會使鹽有點沒用? – cHao 2011-05-03 13:03:18

回答

2

簡答題。

散列號是最小的偏差完全不同,直到你無法計算他們回來這是不行的。即使你可以計算出來,結果將會是你可以選擇的可能性列表。所以沒有確定性。

+1

我需要的是一個Hash樹 - http://en.wikipedia.org/wiki/Hash_tree – fadedbee 2011-05-03 14:27:05

0

通過data0散列將系統中的一些中間狀態。你的hash(data1)是從乾淨的狀態計算出來的。你不能修復HASH1彌補失蹤中間狀態(有一個良好的散列函數)。