结束"Managed"的类名是什么意思(C#.NET)?

Ben*_*Ben 10 .net c# cryptography unmanaged managed

我对C#比较新,所以请耐心等待.我理解托管代码和非托管代码之间的基本区别.但是在使用某些方法时我仍然有点困惑.

例如,"管理"这个词在某些类名称结尾中是什么意思.这是否意味着他们是管理的而其他所有人都没有?例如,AesAesManagedSHA512SHA512Managed之间有什么区别?我知道你不能从托管类中派生出来,但这就是我所知道的.

还应该何时使用"Managed"classess,例如何时选择Aes而不是AesManaged

(我已经在wikipedia(这里)上阅读了托管代码的基础知识,并且还找到了关于托管代码基础知识的很好的解释(这里)

谢谢你的时间和答案.

Han*_*ant 17

.NET中有两种加密包装器,名称以Managed结尾的类和名称以CryptoServiceProvider结尾的类.只有CryptoServiceProvider版本通过了FIPS 140-1认证.它们是Microsoft提交给美国商务部的本机代码的包装器,用于验证算法是否满足本文档中概述的安全要求.它们还要求操作系统安装这些本机库.只要您与美国政府机构或任何规定您的代码必须通过FIPS认证的实体签订合同,FIPS合规就是一件大事.

算法的托管版本使用托管代码编写,并且不依赖于本机加密API库.它们未通过 FIPS认证.您的客户可以使用一种注册表设置来强制执行FIPS合规性.Managed类在打开时会在构造函数中抛出异常.更多关于这篇博文的内容.


Fem*_*ref 6

看看这个Remarks部分:

这是一个抽象类.这个类的唯一实现是SHA512Managed.

含义,SHA512(以及任何其他组合MethodMethodManaged)仅仅是描述合同的任何实施者必须fullfil,它本身不具有功能的基类.

在这种情况下SHA512Managed,只有一个实现 - 托管实现.可能有其他人在C或中使用实现C++.

  • 你关心的是Aes类,它有你需要的方法.Aes.Create()给你一些Aes的具体实例,也许它给你一个AesManaged的实例,也许它实例化另一个类 - 你不需要关心.AesManaged.Create()创建特定AesManaged类的istance,您不应该这样做(阅读Factory模式). (2认同)