gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:45:58 24 4
gpt4 key购买 nike

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

对于纯软件系统,需要解密大量数据集可能需要相当长的处理器时间。我知道英特尔已经推出了他们的 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/调用? (如果有一个包装类来做它就好了,只要它被维护)。

最佳答案

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

这条评论帮了大忙,在做了一些挖掘之后,看起来 AesCryptoServiceProvider 将使用 AES-NI(如果可用)。但是,我找不到 Microsoft 的任何“官方”文档。当运行简单的时序基准测试时,差异快了约 15 倍,因此要么 API 本身进行了大规模优化(增加 15 倍是非常好的优化),要么它使用 AES-NI 指令集。

不幸的是,我没有非 AES-NI 盒子可以测试,但如果我得到一个,我会用结果更新这个线程。

所以我非常有信心这是用于 AES-NI 的 API,但如果不进行进一步测试则无法保证。

关于c# - 如何在 .NET 中使用 CNG(或支持 AES-NI 的指令集)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8140221/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com