MD5哈希加盐在C#中DB保持密码(MD5 hash with salt for keeping p

2019-06-18 14:33发布

能否请你告诉我一些简单的算法通过MD5哈希的用户密码,但用盐腌提高了可靠性。

现在我有这个:

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);
}

Answer 1:

您可以使用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");


Answer 2:

这里有一个样本 。 它处理MD5,SHA1,SHA256,SHA384和SHA512。



Answer 3:

除了上面提到的,如果你只需要一个快速盐腌哈希值,那么你就已经是那里的方式95%的HMACSHA1类:

private static string GenerateHash(string value, string salt)
{
    byte[] data = System.Text.Encoding.ASCII.GetBytes(salt + value);
    data = System.Security.Cryptography.MD5.Create().ComputeHash(data);
    return Convert.ToBase64String(data);
}

真正的窍门是存储盐在一个安全的位置,如您的machine.config。



Answer 4:

微软这样做对你的工作,但它需要多一点的挖。 安装Web服务扩展3.0,并有一个看看Microsoft.Web.Services3.Security.Tokens.UsernameToken.ComputePasswordDigest具有反射功能。

我想在这里发布的源代码,以该功能,但我不知道这是否是合法的做到这一点。 如果有人能安慰我,然后我将这样做。



文章来源: MD5 hash with salt for keeping password in DB in C#