.NET 是否检测并使用硬件加密加速器进行加密操作(检测 GPU 并将其用于图形操作的方式)?
如果没有,您建议使用什么托管库?
.NET 是否检测并使用硬件加密加速器进行加密操作(检测 GPU 并将其用于图形操作的方式)?
如果没有,您建议使用什么托管库?
.NET 相当大。
在 Microsoft .NET 中,在 Windows 下,您会发现名为:
*Managed
,例如SHA1Managed
完全托管的实现。它们不会有任何硬件加速;
*CryptoServiceProvider
,例如SHA1CryptoServiceManager
将使用 CryptoAPI(本机)代码。如果本机 CSP 具有硬件加速功能,那么您将得到它。
在较新的框架版本上,*CNG
(下一代密码学)。这是 CryptoAPI 的替代品——同样的规则适用(如果本机代码可以使用硬件加速,你会得到它)。
在 Mono 中,所有平台都默认拥有完全托管的实现(无论类型的名称如何) 。
现在,在(MS 和 Mono)这两种情况下,您也可以使用自己的(或第三方)实现。CryptoConfig.CreateFrom
当您使用(直接或间接,例如SHA1.Create
)并且您的machine.config
文件包含对替代实现的引用时,这甚至可以对您的应用程序完全透明。这允许您(或其他任何人)用另一个(包括硬件加速)实现添加(或替换)任何实现。
注意:框架的 4.0 版使用新AddAlgorithm
方法使这变得更加容易。
一些硬件供应商设法用他们自己的替换默认的 SChannel 和其他供应商。如果他们这样做,那么 .NET 将使用替代品而不是库存提供者。但是没有办法自动检测和使用加密硬件。
大多数加速器都可以通过 PKCS#11 接口使用。通常,您可以使用我们的 SecureBlackbox,它将通过 PKCS#11 使用此类加速器,但您必须“手动”指定要调用的 PKCS#11 DLL(无法进行自动检测,因为此类 DLL 未在系统中注册)。