c# - 以 "Managed"结尾的类名是什么意思 (C# .NET)?

标签 c# .net cryptography unmanaged managed

我是 C# 的新手,所以请多多包涵。我了解托管代码和非托管代码之间的基本区别。但我仍然有点困惑何时使用某些方法。

例如,“托管”一词在某些类名结尾中是什么意思。这是否意味着它们是受管理的,而其他的则不是?例如,AesAesManaged 或者 SHA512SHA512Managed 有什么区别?我知道您不能从托管类派生,但我只知道这些。

还有什么时候应该使用“托管”类,例如什么时候选择 Aes 而不是 AesManaged

(我已经在维基百科上阅读了托管代码的基础知识(here)并且还找到了关于托管代码基础知识的很好的解释(here)

感谢您的宝贵时间和回答。

最佳答案

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

算法的托管版本是用托管代码编写的,不依赖于 native 加密 API 库。它们通过 FIPS 认证。您的客户可以使用一个注册表设置来强制执行 FIPS 合规性。托管类在打开时将在其构造函数中抛出异常。更多关于这个 blog post .

关于c# - 以 "Managed"结尾的类名是什么意思 (C# .NET)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5848557/

相关文章:

c# - Roslyn:如何获取未解析类型的候选命名空间

c# - 将引用库中的自定义用户控件添加到工具箱

C# 与基于列表的属性相等

c# - "#warning"并不总是显示在错误列表中

c# - 拖放到具有多个文本框的复合用户控件上

c++ - 在Windows中运行PBC-Visual Studio

java - aproximately 给定大小的安全随机数

c# - 检查路径是文件还是目录的更好方法?

c# - 最佳实践?等到收到或在收到时引发事件

java - Diffie-Hellman 在 BouncyCaSTLe 中设置生成器参数