Hash

從可變長度密碼生成固定長度密鑰的正確方法是什麼?

  • April 10, 2015

密碼由使用者輸入,密鑰在本地處理。密碼和密鑰都不會被儲存,只會被使用和遺忘(但希望不會被使用者遺忘)。SHA256 本身是否足以達到此目的?在這種情況下我真的需要鹽嗎?

我查看了 Google 和其他 StackExchange 問題,但他們都假設密碼和/或密鑰將被儲存。在任何其他情況下,它可能會被儲存,儘管我的情況要求使用它並忘記它。

即使沒有儲存密鑰,僅使用散列函式也不夠強大。我們使用者傾向於選擇非常糟糕的密碼,例如“1234”或“密碼”。如果只使用雜湊函式來生成密鑰,那么生成的密鑰很有可能是SHA256("1234")SHA256("password")。也就是說,這種方法非常容易受到暴力攻擊。攻擊者可以簡單地散列常用密碼,類似於字典攻擊。

也可以對已建立的密鑰派生方法進行暴力攻擊,例如PBKDF2scrypt,但成功的機率極小。這些方法是專門為此設計的,例如使用鹽值(為了防止字典攻擊)和雜湊函式的大量迭代(為了減緩暴力攻擊)。

引用自:https://crypto.stackexchange.com/questions/24899