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

时间:2014-05-03 12:02:33

标签: .net aes hardware-acceleration

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

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

1 个答案:

答案 0 :(得分:3)

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

然而,我发现AesCryptoServiceProvider实际上更快,更快,就像数量级差异一样。我怀疑操作系统级别的实现实际上是将AES-NI指令交给CPU进行硬件加速。

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

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

要回答我自己的问题,请尝试AesCryptoServiceProvider,尤其是在64位Windows 8.1 Update 1上。