如何在 .NET 6 中正确计算 sha 512 哈希值

And*_*rus 20 asp.net-mvc cryptography sha sha512 .net-6.0

在 .NET 6 代码中,如何对 C# 中的字符串进行 SHA512?

  var data = Encoding.UTF8.GetBytes("key");
  byte[] hash;
  using (SHA512 shaM = new SHA512Managed())
    hash = shaM.ComputeHash(data);
Run Code Online (Sandbox Code Playgroud)

引发警告

Warning SYSLIB0021  'SHA512Managed' is obsolete:
'Derived cryptographic types are obsolete.
Use the Create method on the base type instead.'
Run Code Online (Sandbox Code Playgroud)

Visual Studio 2022 不为此提供代码更改。如何在 .NET 6 中用正确的代码替换此代码?

代码从 ASP.NET MVC 控制器调用。

小智 21

    public string CreateSHA512(string strData)
    {
        var message = Encoding.UTF8.GetBytes(strData);
        using (var alg = SHA512.Create())
        {
            string hex = "";

            var hashValue = alg.ComputeHash(message);
            foreach (byte x in hashValue)
            {
                hex += String.Format("{0:x2}", x);
            }
            return hex;
        }
    }
Run Code Online (Sandbox Code Playgroud)


Abo*_*our 9

你可以使用这个方法

public string GetSha256Hash(string input)
{
    using (var hashAlgorithm = SHA512.Create())
    {
        var byteValue = Encoding.UTF8.GetBytes(input);
        var byteHash = hashAlgorithm.ComputeHash(byteValue);
        return Convert.ToBase64String(byteHash);
    }
}
Run Code Online (Sandbox Code Playgroud)