带有salt的MD5哈希,用于在C#中保存密码

aba*_*hev 18 .net c# 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);
}
Run Code Online (Sandbox Code Playgroud)

dtb*_*dtb 40

您可以使用HMACMD5类:

var hmacMD5 = new HMACMD5(salt);
var saltedHash = hmacMD5.ComputeHash(password);
Run Code Online (Sandbox Code Playgroud)

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

var hmacSHA1 = new HMACSHA1(salt);
var saltedHash = hmacSHA1.ComputeHash(password);
Run Code Online (Sandbox Code Playgroud)

双方saltpassword预计作为字节数组.

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

var salt = System.Text.Encoding.UTF8.GetBytes("my salt");
var password = System.Text.Encoding.UTF8.GetBytes("my password");
Run Code Online (Sandbox Code Playgroud)

  • HMAC通常用于获取消息的键控哈希值.如果使用salt替换密钥并使用密码替换消息,则可以使用HMAC获取密码的盐渍哈希值. (4认同)

Dar*_*rov 12

这是一个样本.它处理MD5,SHA1,SHA256,SHA384和SHA512.