.NET Core 3.1中SHA256类无HashData方法?是否缺少依赖包?
解决.NET Core 3.1中SHA256类方法缺失的问题
这种情况大概率不是缺少依赖包,不过咱们可以一步步排查原因:
你可能在操作抽象基类而非实例:SHA256本身是个抽象类,它的核心方法(比如
ComputeHash)都是在具体派生类里实现的。如果你直接对着SHA256这个类型写代码,只能看到抽象类定义的Create和继承自Object的Equals、ReferenceEquals这几个方法。正确的做法是通过SHA256.Create()获取实例后,再调用实例上的方法。确认命名空间是否正确引用:一定要在代码文件顶部加上这个引用:
using System.Security.Cryptography;没有这个的话,编译器可能无法识别完整的方法集,甚至需要你写全命名空间路径才能访问到成员。
特殊项目场景下的NuGet包补充:虽然.NET Core 3.1默认包含了加密核心库,但如果你的项目是精简类库或者裁剪过的框架类型,可以尝试安装
System.Security.Cryptography.AlgorithmsNuGet包,选和.NET Core 3.1兼容的3.1.x版本就行。
给你个正确使用的示例,这样就能调用到完整方法了:
using System; using System.Security.Cryptography; using System.Text; class Program { static void Main() { string input = "test content"; using (SHA256 sha256Hash = SHA256.Create()) { // 这里就能正常调用ComputeHash等核心方法 byte[] hashBytes = sha256Hash.ComputeHash(Encoding.UTF8.GetBytes(input)); StringBuilder result = new StringBuilder(); foreach (byte b in hashBytes) { result.Append(b.ToString("x2")); } Console.WriteLine("SHA256 哈希值: " + result.ToString()); } } }
先从创建实例和检查命名空间入手,一般就能解决问题,如果还是不行再尝试安装NuGet包。
内容的提问来源于stack exchange,提问作者SpiritBob
相关产品推荐
相关产品推荐

