所有框架版本均支持.Net SHA256Managed类,而框架3.5及更高版本仅支持SHA256CryptoServiceProvider类。

为什么要引入SHA256CryptoServiceProvider?它似乎与SHA256Managed类相同,但后者的性能更好。

我缺少什么,为什么要使用SHA256CryptoServiceProvider

最佳答案

它与性能无关-SHA256CryptoServiceProvider使用经 FIPS 140-2验证的(FIPS =联邦信息处理标准)加密服务提供程序(CSP),而SHA256Managed不使用。 SHA256Managed是纯托管实现,而SHA256CryptoServiceProvider可能做同样的事情,但包装了CryptoAPI。

如果您要在美国联邦或许多州政府系统上运行,那么这会产生很大的影响,因为这是软件供应商的要求。在NIST看来,使用未经FIPS验证的加密模块(如SHA256Managed实现)与完全不使用任何加密没有什么不同。

如果您不关心FIPS验证,那么SHA256Managed很好。

以Cng结尾的所有内容都代表“加密API:下一代”,指的是美国政府称为Suite B加密算法的较新协议(protocol),但无论.Net框架版本如何,在Vista/Server 2008之前均不提供支持。

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

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

09-25 19:49