c# – SHA256CryptoServiceProvider和SHA256Managed之间的差异

.Net SHA256Managed类在所有框架版本中都受支持,而SHA256CryptoServiceProvider类仅受框架3.5及更高版本的支持。

为什么会引入SHA256CryptoServiceProvider?它似乎做同样的SHA256Managed类,但后者表现更好。

我缺少什么,为什么我应该使用SHA256CryptoServiceProvider?

它与性能无关 – SHA256CryptoServiceProvider使用FIPS 140-2验证(FIPS =联邦信息处理标准)加密服务提供程序(CSP),而SHA256Managed不使用。 SHA256Managed是一个纯的管理实现,而SHA256CryptoServiceProvider大概是相同的东西,但包装CryptoAPI。

如果你要在美国联邦或许多州政府系统上操作,这是很大的后果,因为它是软件供应商的要求。在NIST的眼中,使用非FIPS验证的加密模块(如SHA256Managed实现)与不使用任何加密没有区别。

如果你不关心FIPS验证,那么SHA256Managed是好的。

以Cng结尾的所有内容代表“Crytographic API:下一代”,指的是美国政府称为Suite B加密算法的新协议,但不管.Net框架版本是否在Vista / Server 2008之前没有支持。

所以使用适合你保护的算法和实现。您将受到使用的.Net框架版本,您的代码运行的操作系统以及是否需要使用FIPS 140-2 / 140-3(2011年到期)验证模块的限制, 。如果您需要的组合没有受支持的.Net Framework类,则有第三方模块可用,并且您也可以下拉并使用非托管CAPI(如果需要)。

如果你有失眠,你可以找到治愈在http://csrc.nist.gov/groups/STM/cmvp/standards.html#02

翻译自:https://stackoverflow.com/questions/3554882/difference-between-sha256cryptoserviceprovider-and-sha256managed

转载注明原文:c# – SHA256CryptoServiceProvider和SHA256Managed之间的差异