是否可以在.net framework 4.7中使用AES(256位)GCM模式加密数据?

Rag*_*ghu 7 .net encryption cryptography aes aes-gcm

MSDN链接提供了具体的AES类的引用:

  • System.Security.Cryptography.AesCng
  • System.Security.Cryptography.AesCryptoServiceProvider
  • System.Security.Cryptography.AesManaged

但是,AesCryptoServiceProvider适用于较旧的计算机,而AesManaged未通过FIPS认证.所以唯一的选择是AesCng.AesCng有一个名为Mode的属性,它只接受:CBC,ECB,OFB,CFB,CTS但没有GCM.

  1. 此框架是否支持AES GCM?
  2. 如果是的话,有一个例子吗?
  3. 如果不是,那么我的选择是什么?

Jam*_*olk 6

此答案反映了上述 Luke Park、bartonjs、Timo、a 和 Maarten Bodewes 的评论。

一种选择是使用Bouncycastle C# 库,它有自己独立的 AES 实现以及 GCM 模式。查看类 GCMBlockCipher、AesEngine 和 AEADParameters 的源代码。

另一种选择是使用 P/Invoke 手动调用BCryptEncrypt

最后,请注意 .NET Core 将从 3.0 开始支持。源已经在github 中可用。

  • 作为 2021 年 1 月的更新,[AesGcm 类](https://docs.microsoft.com/en-us/dotnet/api/system.security.cryptography.aesgcm?view=net-5.0) 的文档现已发布存在于 MSDN 上,并且在 .Net 5.0 和 .Net Core 3.0 中受支持。它是 .Net 标准 2.1 的一部分。 (2认同)