2012-07-08 35 views
0

我想測試我的應用程序,當它被欺騙的傳遞SHA-160總和欺騙,因此想要計算一個數據正在求和的變化,從而導致原始SHA-160總和,從而將被錯過。我在C++中使用Botan庫來計算總和。如何計算具有相同SHA-160總和的另一個位模式?

如何計算1500比特左右的比特流,使其SHA-160與原始碼相同?

+6

如果這很容易,難道不會達到目的嗎? – Joe 2012-07-08 12:30:35

+1

維基百科說,馬克史蒂文斯的碰撞攻擊需要2^57.5次左右的操作。祝你好運:) https://en.wikipedia.org/wiki/SHA-1#SHA-1 – 2012-07-08 12:39:52

回答

3

簡短的回答是:你不能。

長的答案是:你可以,但只能用浩大的計算能力。散列算法的全部目的是使其很難找到衝突。如果很容易發現碰撞,那麼使用散列算法就沒什麼意義了。

爲了解決您的測試問題,我建議您將應用程序的文件讀取/哈希計算部分抽象爲單獨的類,然後使用假哈希實現來測試應用程序的其餘部分。

+0

+1。對於測試,您可以用故意破壞的散列函數替換SHA-160功能。 (例如,您可以專門測試特定的位模式併爲選定的模式返回相同的散列。) – 2012-07-08 13:06:18

相關問題