我一直在折騰如何將密碼存儲在我的數據庫中一段時間的問題。這是我第一次通過網絡登錄創建一個安全的應用程序,所以我想建立一些良好的實踐。散列和醃製密碼字段
首先,我讀了散列和醃製。看來這個想法是......
- 獲得哈希算法
- 獲得來自用戶的密碼
- 從用戶添加「鹽」以明文密碼
- 哈希整個密碼(包括食鹽)
- 存儲在數據庫中的鹽,這樣就可以在以後檢索(爲PSWD驗證)
這讓我思考......如果黑客知道你的鹽(b因爲它存儲在數據庫的某處,可能是一個名爲this_is_not_the_salt_ur_looking_for
的列或者其他含義不明的列),他們可以重新生成密碼字典並獲得訪問權限。
然後我有一個想法。如果您將鹽存儲在哈希密碼字段中,該怎麼辦?所以按照步驟1-4(隨機地產生的鹽),則在步驟5中,插入在由密碼口譯類或服務某處已知的密碼的鹽:
xxxxxsaltvaluexxxxxxxxxxxxxxxx
其中x是散列字符串值。任何人都可以看到這個問題嗎?這完全沒有必要嗎?
答案:
沒有理由不能這樣做。正如Yahia所說,保護密碼的其他方法包括雙(或n)散列。在另一個說明中,BCrypt看起來像是一種幾乎完全停止蠻力攻擊的好方法,但我找不到C#的可信庫。
TTD
我一直在想這個問題, 。 –