引言
密码安全在任何软件应用程序中都至关重要。散列和加盐是两种用于保护密码不被泄露的关键技术。
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中文网其他相关文章!