c# – 如何在.NET中使用CNG(或AES-NI启用的指令集)?

我目前在c#中使用AES执行大量的文本加密/解密.

使用纯软件系统,可以在需要解密的大量数据集中花费相当多的时间处理器.我知道英特尔已经出来了他们的AES-NI指令集,AMD也出来了.

我使用的是.NET 4.0,我知道Windows CNG框架使用了这些指令集,但在.NET环境中的AesManaged并不表现出来.

有一个梦幻般的项目“CLR Security”,它是从.NET 3.5到Windows CNG的网关,但是一年没有维护,我宁愿(如果可能的话)跳上一个垂死的项目.

在.NET 4中有一个CNGProvider类,但是似乎没有足够的文档将AES的工作解密拼凑在一起.

有没有人有经验的主题,他们可以指出我正确的方向,如何在纯.NET环境中实现AES-NI,使用预制的类,而不必直接从c#执行p / invoke. (如果有一个包装类,只要它被维护就好了).

What about AesCryptoServiceProvider? It says that uses CAPI, and so
hopefully CNG if available. – Rup

这个评论有了很大的帮助,在做了一些挖掘之后,看起来像AesCryptoServiceProvider将会使用AES-NI,如果可以的话,我看不到任何“官方”的文档,但是当运行简单的时序基准时,差距要快15倍,本身被大量优化(对于15倍增加是非常好的优化),或者它使用AES-NI指令集.

Unfortunatley我没有一个非AES-NI盒子来测试,但如果我有一个我会更新这个线程与结果.

所以我很自信,这是API用于AES-NI的API,但不经过进一步测试就不能保证.

翻译自:https://stackoverflow.com/questions/8140221/how-to-use-a-cng-or-aes-ni-enabled-instruction-set-in-net

转载注明原文:c# – 如何在.NET中使用CNG(或AES-NI启用的指令集)?