2017-06-01 31 views
0

我與我的一位朋友發生了爭執。他說它可以作爲一個使用,但是哈希函數應該具有強大的碰撞抵抗能力,校驗和函數是否具有它?我不太確定。校驗和功能可以用作散列函數嗎?

+2

* could *和* should *之間有區別。還有很多不同的校驗和。所以沒有一個答案。 –

+0

Stack Overflow是編程和開發問題的網站。這個問題似乎與題目無關,因爲它不涉及編程或開發。請參閱幫助中心的[我可以詢問哪些主題](http://stackoverflow.com/help/on-topic)。也許[密碼學堆棧交換](http://crypto.stackexchange.com/)或[信息安全堆棧交換](http://security.stackexchange.com/)將是一個更好的地方要問。 – jww

回答

2

不,通用校驗和函數沒有強大的抗碰撞性。當然,你可能會認爲密碼散列函數也是一個校驗和,但是這是圍繞着變量的。

對於碰撞阻力,您必須考慮生日問題。這意味着散列函數的安全性大約是輸出大小的一半。因此,任何低於160位輸出大小(80位安全性)的東西都會直接受到注意,因爲暴力強制會被視爲可能。最低限度,您希望有128位輸出,MD-5(破損)或RIPEMD-128的輸出。

一般而言,您可以直接關閉任何沒有至少128位輸出的功能。也就是說,假設對手不受其他方式的限制,例如用於生成散列的設置重試計數。

請注意,內部結構也很重要;如果算法不是專門作爲密碼哈希創建的,那麼它們具有抗碰撞能力的機會大約爲零。