我们在C#中使用Re hashing Password吗?

时间:2015-02-02 23:38:15

标签: c# hash

我正在使用Hashing和Salt来解密密码。这就是我正在使用的方法:

  public string CreateSalt(int size)
    {
        var rng = new RNGCryptoServiceProvider();
        var buff = new byte[size];
        rng.GetBytes(buff);
        return Convert.ToBase64String(buff);

    }

    public string GenerateHash(string input, string salt)
    {
        byte[] bytes = Encoding.UTF8.GetBytes(input + salt);
        SHA512Managed sha256 = new SHA512Managed();
        byte[] hash=  sha256.ComputeHash(bytes);
        return ByteArrayToHexString(hash);
    }

在我对密码进行哈希处理并将其保存到数据库之后,我该如何重新编写密码呢?或者即使我需要彻底改变? 用户将创建他们的密码以登录该网站。我还没有决定忘记密码是如何工作的,所以也许它会重置密码并发送给他们。任何想法,围绕哈希的想法?

1 个答案:

答案 0 :(得分:1)

您必须在数据库中存储散列密码和密码salt。当用户登录时,您将获得输入密码,将其与数据库中存储的盐进行哈希处理,然后将结果与存储的哈希密码进行比较。

enter image description here

忘记密码是对的。只需创建一个随机密码并将其发送给用户。