为什么在我的Intellisense中隐藏SHA1Managed,SHA256Managed之类的类? [英] Why are classes like SHA1Managed, SHA256Managed hidden from my Intellisense?
问题描述
当我进入 System.Security.Cryptography
命名空间时,我只能看到 SHA1
, SHA256
, HMACSHA1
其他类.
When I go to the System.Security.Cryptography
namespace, I can only see SHA1
, SHA256
, HMACSHA1
etc classes there.
但是实际上,有一个 SHA1Managed
类和一个 SHA256Managed
类,我看不到吗?当我手动将其写出时,一切都会按预期进行.
But actually, there is a SHA1Managed
class, as well as SHA256Managed
, which I don't see? When I write it out manually - everything works as expected.
这是故意隐藏的吗?简单地实例化托管版本与调用其工厂方法( SHA1.Create()
或 SHA256.Create()
)之间有什么区别?他们是同一回事吗?
Is this hidden intentionally? And what's the difference between simply instancing a managed version of those, versus for example calling their factory methods (SHA1.Create()
or SHA256.Create()
)? Are they the same thing?
推荐答案
无法为您解决奇怪的IntelliSense问题,但请查看 SHA1Managed 实现.SHA1只是一个基类.在这种情况下,实现是完全相同的.它与 FIPS认证.托管版本不使用本地加密库,因此未经FIPS认证.有一个用于客户的注册表设置( FipsAlgorithmPolicy
)可以强制执行FIPS合规性.如果注册表设置已打开,则不能使用托管类.
Can't give you an answer for the weird IntelliSense problem but have a look at the SHA1 and SHA1Managed implementations. SHA1 is just a base class. The implementation is exactly the same in this case. It has something to do with the FIPS certification. Managed versions don't use the native crypto libraries and therefor are not FIPS certified. There is a registry setting (FipsAlgorithmPolicy
) for customers which enforces FIPS compliance. If the registry setting is turned on you can't use the managed classes.
对于您来说,实例化 SHA1Managed
或使用 SHA1.Create()
并没有什么不同.但是,如果您需要获得FIPS认证,那确实会有所不同.
In your case it does not make any difference if you instanciate SHA1Managed
or use SHA1.Create()
. But it does make a difference if you need to meet the FIPS certification.
这篇关于为什么在我的Intellisense中隐藏SHA1Managed,SHA256Managed之类的类?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!