c# - 带盐的 MD5 散列用于在 C# 中将密码保存在数据库中

标签 c# .net security hash md5

能否请您告诉我一些通过 MD5 散列用户密码的简单算法,但使用salt 以提高可靠性。

现在我有了这个:

private static string GenerateHash(string value)
{
    var data = System.Text.Encoding.ASCII.GetBytes(value);
    data = System.Security.Cryptography.MD5.Create().ComputeHash(data);
    return Convert.ToBase64String(data);
}

最佳答案

您可以使用 HMACMD5类:

var hmacMD5 = new HMACMD5(salt);
var saltedHash = hmacMD5.ComputeHash(password);

也适用于 SHA-1、SHA256、SHA384、SHA512 和 RIPEMD160:

var hmacSHA1 = new HMACSHA1(salt);
var saltedHash = hmacSHA1.ComputeHash(password);

saltpassword 都应该是字节数组。

如果您有字符串,则必须先将它们转换为字节:

var salt = System.Text.Encoding.UTF8.GetBytes("my salt");
var password = System.Text.Encoding.UTF8.GetBytes("my password");

关于c# - 带盐的 MD5 散列用于在 C# 中将密码保存在数据库中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1300890/

相关文章:

c# - 全局变量 Web 方法

c# - 在不跳过值的情况下节流 Rx.Observable

c# - C#中使用UdpClient类如何接收UDP包

java - 将分号文本转换为Excel

Java:从本地小程序调用 .dll...我做错了什么

security - 关于SSL证书的问题

c# - 如何编码包含指向未知类型的 C 样式数组的第一个元素的指针的结构

c# - 使用 C# webrequests 时如何在 wireshark 中解密 TLS 通信

java - 我应该多次使用同一个 key 吗?

c# - System.Random 的深度克隆