SHA256Managed所有框架版本都支持.Net 类,而SHA256CryptoServiceProvider该类仅支持框架3.5及更高版本.
为什么要SHA256CryptoServiceProvider介绍?它似乎和SHA256Managed班级一样,但后者表现更好.
我错过了什么,为什么要使用SHA256CryptoServiceProvider?
Sco*_*Bai 62
它与性能无关 - SHA256CryptoServiceProvider使用FIPS 140-2验证(FIPS =联邦信息处理标准)加密服务提供商(CSP)而SHA256Managed不是. SHA256Managed是一个纯粹的托管实现,SHA256CryptoServiceProvider虽然可能是相同的东西,但包装CryptoAPI.
如果您要在美国联邦或许多州政府系统上运营,这会产生很大的影响,因为这是软件供应商的要求.在NIST看来,使用非FIPS验证的加密模块(如SHA256Managed实现)与完全不使用任何加密没有什么不同.
如果您不关心FIPS验证,那么SHA256Managed就可以了.
以Cng结尾的一切代表"Crytographic API:Next Generation",它指的是美国政府称为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找到治疗方法.
小智 7
我想添加一些关于此的信息,因为我刚遇到一个问题,需要我切换到使用 CSP 版本。抱歉,我无法添加评论(代表太低)。
为了对此进行测试,您可以通过将 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\FipsAlgorithmPolicy\Enabled 设置为 1 来快速启用 FIPS。然后启动 Visual Studio 并尝试构建一个使用SHA256Managed. 您会收到错误消息,提示“此实现不是 Windows 平台 FIPS 验证的加密算法的一部分”。事实上,对于任何 *Managed 加密算法,您都会得到它。
现在换出SHA256Managed与SHA256CryptoServiceProvider和重建。噗,错误消失了!
注意:如果您部署了一个程序并且客户启用了 FIPS,它会抛出一个InvalidOperationException与上面相同的错误消息。
| 归档时间: |
|
| 查看次数: |
13252 次 |
| 最近记录: |