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

Is it possible to encrypt data with AES (256 bit) GCM mode in .net framework 4.7?

MSDN link 提供对具体 AES 的引用 类:

但是 AesCryptoServiceProvider 适用于旧机器,AesManaged 未通过 FIPS 认证。所以唯一的选择是AesCng。 AesCng 有一个名为 Mode 的 属性,它将只采用:CBC、ECB、OFB、CFB、CTS,但 没有 GCM

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

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

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

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

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

中可用