首页 > 解决方案 > 为什么像 SHA1Managed、SHA256Managed 这样的类对我的 Intellisense 隐藏?

问题描述

当我转到System.Security.Cryptography命名空间时,我只能在那里看到SHA1,SHA256HMACSHA1类。

但实际上,有一个SHA1Managed类,以及SHA256Managed,我没有看到?当我手动写出来时 - 一切都按预期工作。

这是故意隐藏的吗?SHA1.Create()简单地实例化它们的托管版本与调用它们的工厂方法(或)有什么区别SHA256.Create()?它们是一样的吗?

标签: c#.net-corehashcryptographyintellisense

解决方案


无法为奇怪的 IntelliSense 问题提供答案,但请查看SHA1SHA1Managed实现。SHA1 只是一个基类。在这种情况下,实现完全相同。它与FIPS 认证有关。托管版本不使用本机加密库,因此未经 FIPS 认证。有一个FipsAlgorithmPolicy强制 FIPS 合规性的客户注册表设置 ( )。如果打开注册表设置,您将无法使用托管类。

在您的情况下,如果您实例化SHA1Managed或使用SHA1.Create(). 但是,如果您需要满足 FIPS 认证,它确实会有所作为。


推荐阅读