我们是否在 C# 中使用重新哈希密码

Are we using Re hashing Password in C#

我正在使用 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);
    }

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

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

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