2012-06-08 65 views
0

我有一個文件說foo.txt。說,它的SHA-256是SHA(foo.txt)。現在,我把文件分成多個部分,比如p1,p2,... pn。每個碎片的哈希值是SHA(p1),SHA(p2),... SHA(pn)。從文件的散列導出文件的散列

我的問題是,是否有可能以某種方式派生SHA(foo.txt),只給出SHA(p1),SHA(p2),...,SHA(pn)?

我正在處理一個問題,其中每個文件的散列都有散列。但是,我需要派生實際文件的SHA而無需訪問任何文件或實際文件。

回答

0

不,這是不可能的。這將違背安全散列函數的性質。

你可以做的唯一的事情就是存儲所有的散列(連同信息多長時間一樣),然後通過檢查所有對應的完整文件同樣的方式。

+0

這不是他唯一能做的事 - 根據他的需要,一棵梅克爾樹可能是有用的。 –

-1

當然,有一種方法。

查找字符串,當散列時,字符串將匹配您想要的部分的摘要。把它們按正確的順序放在一起。哈希完整的,重建的文件。

請注意,此方法並非故障安全,因爲有無數個字符串會與您的實際零件發生衝突。另外,這將花費很多時間。

+0

安全哈希函數的一個要求是,僅僅「查找字節串」將匹配給定的哈希值是不可能/不可行的。 – Thilo

+0

@Thilo不可行,是的,但這是可能的。不,在這個宇宙中,沒有足夠的計算能力或時間,但我們可以描述和算法,最終會產生正確的答案。 (AKA蠻力。) – bdares

+0

我相當肯定用戶不希望在實踐中完全不可能實現的'解決方案'。 –