2011-05-29 64 views

回答

7

一個重要的學習規則是「永遠不要試圖發明自己的密碼學」。你最好只是浪費時間,最壞的情況是引入安全漏洞。

如果您不確定自己是否是該規則的例外情況,那麼您對此規則不是例外。

加密哈希的設計者已經擔心碰撞,所以你不必這樣做。只需選擇一個(SHA-256是一個不錯的選擇),並將您的精力集中在其他應用程序上。

+0

請注意,雖然SHA-256在尺寸和加密強度方面足夠強大,但它對於密碼散列格式來說並不好。你需要一個緩慢的鹽漬方案,比如PBKDF2,scrypt或者bcrypt。 – CodesInChaos 2012-05-19 12:11:54

6

您可以改爲使用SHA256作爲散列算法。迄今爲止沒有發現碰撞,並且很可能未來在密碼上看到任何碰撞。

5

你可以使用更長的散列。例如,SHA-512就是512位,並且(假設它是統一的),與SHA-256衝突的可能性要小得多。但個人而言,我不會爲此擔心。大多數密碼本身小於32個字節(256位),因此與SHA-256發生衝突的可能性極低。

+0

我不是專家,但我很確定把位長加倍使得一個班級只有「有可能發生衝突」。 – cdiggins 2011-05-30 00:00:50

+2

@cdiggins:請你詳細說明一下嗎?我不知道你的意思。 – 2011-05-30 00:02:35

+1

假設你可以做的最好的事情就是隨機猜測(就任何人都知道的SHA-N而言這是真的),挑選一個與給定的y碰撞的x的概率是1/2 SHA-256爲256,SHA-512爲1/2^512。後者很多,遠小於前者的一半。儘管如此,這兩種情況都不會發生,因爲在你的餘生中你每天都不會在彩票中獲得第一名。 – Nemo 2011-05-30 00:15:05