. net AesManaged加密硬件是否加速?



有没有人知道从。net(>4.0)的AesManaged Cryptography提供程序是否支持硬件加速,如果CPU有AES扩展(如基于Haswell的CPU)?

如果有,有办法用代码确认吗?

显然。net AesManaged实现不是硬件加速的。SO和Google的搜索表明,AesCryptoServiceProvider(它是操作系统加密的包装器)通常比AesManaged实现慢得多。

然而,我发现AesCryptoServiceProvider实际上更快,快得多,在数量级上的差异。我怀疑操作系统级别的实现实际上是将AES-NI指令传递给CPU以进行硬件加速。

我找不到任何关于上述观察的文档,但如果我的怀疑是正确的,那么至少在运行64位Windows 8.1 Update 1的Core i7 4770 CPU上,AesCryptoServiceProvider是硬件加速的。

性能观察表明,在上述机器上,使用AesManaged进行AES CBC解密的8个线程将耗尽CPU,并消耗数据所需的尽可能多的内存(即对于我们来说,32GB的RAM经常被耗尽)。完全相同的代码,但使用AesCryptoServiceProvider的CPU内核平均在30-40%左右,内存(私有工作字节)很少超过10GB。

为了半回答我自己的问题,尝试AesCryptoServiceProvider,特别是64位Windows 8.1 Update 1。

最新更新