生成密码哈希

时间:2015-11-05 14:02:02

标签: c# sql winforms hash

对于我的登录系统,我希望在我的数据库中散列密码。所以我决定读一下哈希以及怎么做但不幸的是它对我来说没有任何意义,因为我找不到我想要的例子。

我想要它,以便在创建用户帐户时,密码被哈希并存储在我的数据库中,然后当它们登录时,它会哈希登录密码并使用数据库中的哈希密码进行检查。如果这有任何意义,我会很感激帮助。

如果您需要我的代码示例或其他任何问题,我会将其编辑到我的问题中。

1 个答案:

答案 0 :(得分:9)

您可以使用哈希算法,例如MD5SHA1SHA265SHA512,...来哈希密码。例如:

public string Hash(string password)
{
    var bytes = new UTF8Encoding().GetBytes(password);
    var hashBytes = System.Security.Cryptography.MD5.Create().ComputeHash(bytes);
    return Convert.ToBase64String(hashBytes);
}

然后将密码的哈希值存储在数据库中,当您想要将输入的密码与数据库存储值进行比较时,将输入值的哈希值与数据库值进行比较。

修改

考虑使用SHA256SHA512代替MD5

public string Hash(string password)
{
    var bytes = new UTF8Encoding().GetBytes(password);
    byte[] hashBytes;
    using (var algorithm = new System.Security.Cryptography.SHA512Managed())
    {
        hashBytes = algorithm.ComputeHash(bytes);
    }
    return Convert.ToBase64String(hashBytes);
}

这是一个很简单的例子:在实际场景中,你也应该使用salt作为哈希。您可以阅读有关盐腌here的更多信息。