引言
密碼安全在任何軟件應用程序中都至關重要。散列和加鹽是兩種用於保護密碼不被洩露的關鍵技術。
DavidHayden 的代碼:基本的散列和加鹽
DavidHayden 的代碼片段提供了密碼散列和加鹽的基本實現。它利用 FormsAuthentication 類對密碼進行散列,以便存儲在配置文件中。但是,對於像散列和鹽這樣的二進制 Blob,字符串之間的轉換被認為是不必要的。
替代 C# 方法:高級散列和加鹽
以下來自“Beginning ASP.NET Security”的改進方法包含了一些增強功能:
<code class="language-csharp">static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt) { HashAlgorithm algorithm = new SHA256Managed(); byte[] plainTextWithSaltBytes = new byte[plainText.Length + salt.Length]; for (int i = 0; i < plainText.Length; i++) { plainTextWithSaltBytes[i] = plainText[i]; } for (int i = 0; i < salt.Length; i++) { plainTextWithSaltBytes[plainText.Length + i] = salt[i]; } byte[] hash = algorithm.ComputeHash(plainTextWithSaltBytes); return hash; }</code>
此方法使用了更安全的 SHA256 算法,並在字節數組而不是字符串上執行散列。它還確保每個密碼的鹽都是唯一的。
其他注意事項
Encoding.UTF8.GetBytes(string)
轉換為字節數組。 Convert.ToBase64String
轉換為字符串,並使用 Convert.FromBase64String
轉換回字節數組。 以上是如何在C#中安全地哈希和鹽密碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!