加密加速器和.NET

el_*_*yan 4 .net cryptography hardware-acceleration

.NET是否检测并使用硬件加密加速器进行加密操作(它检测GPU并将其用于图形操作的方式)?

如果没有,您建议使用哪个托管库?

pou*_*pou 5

.NET非常大.

在Microsoft .NET中,在Windows下,您将找到名为的类型:

  • *Managed,例如SHA1Managed,这是完全托管的实现.目前不会就其进行任何硬件加速;

  • *CryptoServiceProvider,例如SHA1CryptoServiceManager,它将使用CryptoAPI(本机)代码.如果本机CSP具有硬件加速功能,那么您将获得它.

  • 在较新的框架版本上,*CNG(Cryptography Next Generation).这是CryptoAPI的替代品 - 同样的规则适用(如果本机代码可以使用硬件加速,你会得到它).

在Mono,所有平台中,默认情况下,您将拥有完全托管的实现(无论类型的名称).

现在,在(MS和Mono)两种情况下,您也可以使用自己的(或第三方)实现.当您使用CryptoConfig.CreateFrom(直接或间接,例如SHA1.Create)并且您的machine.config文件包含对替代实现的引用时,这甚至可以对您的应用程序完全透明.这允许您(或任何其他人)使用另一个(包括硬件加速)实现添加(或替换)任何实现.

注意:框架的4.0版使用新AddAlgorithm方法使这更容易.