我是 C# 的新手,所以请多多包涵。我了解托管代码和非托管代码之间的基本区别。但我仍然有点困惑何时使用某些方法。
例如,“托管”一词在某些类名结尾中是什么意思。这是否意味着它们是受管理的,而其他的则不是?例如,Aes 和 AesManaged 或者 SHA512 和 SHA512Managed 有什么区别?我知道您不能从托管类派生,但我只知道这些。
还有什么时候应该使用“托管”类,例如什么时候选择 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/