我有一个类,它负责根据发送给它的内容生成哈希。但是,SHA256Managed.Create(text)方法的返回总是返回null

以下是我的代码:

using System.Security.Cryptography;
using System.Text;

namespace Autenticacao_no_ASP_.NET_MVC.Utils
{
    public class Hash
    {
        public static string GerarHash(string texto)
        {
            SHA256 sha256 = SHA256Managed.Create(texto);
            byte[] bytes = Encoding.UTF8.GetBytes(texto);
            byte[] hash = sha256.ComputeHash(bytes);
            StringBuilder result = new StringBuilder();

            for (int i = 0; i < hash.Length; i++)
            {
                result.Append(hash[i].ToString("X"));
            }

            return result.ToString();
        }
    }
}



  sha256,正在返回null。

最佳答案

创建SHA256的首选方法(使用SHA256选择实现):

SHA256 sha256 = SHA256.Create();


Create的参数是算法的名称-除非您使用基类来选择要使用哪一个,否则您实际上不需要传递一个。要解决您的代码,请删除或使用正确的参数:

SHA256 sha256 = SHA256Managed.Create();


要么

SHA256 sha256 = SHA256Managed.Create("SHA256");


请注意,这两个调用实际上都是由SHA256基类实现的,首先仅选择“默认”实现。

请参见SHA256.Create以供参考。

关于c# - C#返回值SHA256Managed为NULL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53990803/

10-17 02:06