Dot-Net
安全密碼散列
我需要在 .Net WinForms 應用程序中儲存單個密碼的雜湊值。
最安全的方法是什麼?
特別是:
- 鹽,HMAC,或兩者兼而有之?
- 多少鹽?
- 多少次迭代?
- 什麼編碼?(密碼是純ASCII)
我假設算法應該是 SHA512 或 HMACSHA512。
使用至少 128 位或更長的安全隨機鹽對雜湊進行加鹽,以避免彩虹攻擊並使用BCrypt、PBKDF2或scrypt。PBKDF2 帶有NIST 批准。
問題是 MD5 速度很快。它的現代競爭對手也是如此,例如 SHA1 和 SHA256。速度是現代安全散列的設計目標,因為散列是幾乎每個密碼系統的建構塊,並且通常在每個數據包或每個消息的基礎上按需執行。
速度正是您在密碼雜湊函式中不想要的。
快速密碼驗證功能是一個問題,因為它們可能會受到暴力攻擊。使用上述所有算法,您可以控制“緩慢”