考慮以下兩種方法:密碼哈希與真正的隨機鹽或用戶名鹽加胡椒粉?
hashedPassword = hash(trulyRandomSalt + password)
凡hashedPassword和trulyRandomSalt都存儲在數據庫中。
hashedPassword = hash(applicationConstantPepper + uniqueUserName + password)
凡hashedPassword和uniqueUserName存儲在數據庫和applicationConstantPepper存儲在應用程序配置。在這裏,uniqueUserName作爲一個鹽,通常是電子郵件地址。
我讀過這個question,它有很多很好的信息,但沒有解決應用程序不斷胡椒值,以及如何改善使用用戶名作爲鹽。
我總是使用方法一與32位加密隨機鹽。但是,我剛剛看到方法二在另一個應用程序中使用。我在方法二中遇到的第一個問題是,它將用戶名與哈希關聯,以便在不重新生成哈希的情況下永遠不會更改用戶名。
方法二的安全性問題是什麼? 這將是最好的方法來使用?
托馬斯·波林錯過了一些微妙的觀點(或者他知道他們,但他畫的畫面太寬泛)。 – jww
特別要指出的是,爲什麼不建議他們對該答案發表評論或編輯,所以他們可以被納入這樣一個流行的問題和答案? –
「...爲什麼不建議他們在評論或編輯該答案」 - 這不是一個我有興趣打架的戰鬥。 – jww