是否可以在 .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 的引用 类:
- System.Security.Cryptography.AesCng
- System.Security.Cryptography.AesCryptoServiceProvider
- System.Security.Cryptography.AesManaged
但是 AesCryptoServiceProvider 适用于旧机器,AesManaged 未通过 FIPS 认证。所以唯一的选择是AesCng。 AesCng 有一个名为 Mode 的 属性,它将只采用:CBC、ECB、OFB、CFB、CTS,但 没有 GCM。
- 此框架支持 AES GCM 吗?
- 如果有,有例子吗?
- 如果不是,那我有什么选择?
此回答反映了上述 Luke Park、bartonjs、Timo、a 和 Maarten Bodewes 的评论。
一种选择是使用 Bouncycastle C# library,它有自己独立的 AES 实现以及 GCM 模式。查看 类 GCMBlockCipher、AesEngine 和 AEADParameters 的源代码。
另一种选择是使用P/Invoke手动调用BCryptEncrypt。
最后,请注意 .NET Core 将从 3.0 开始支持。来源已在 github.
中可用
MSDN link 提供对具体 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。
- 此框架支持 AES GCM 吗?
- 如果有,有例子吗?
- 如果不是,那我有什么选择?
此回答反映了上述 Luke Park、bartonjs、Timo、a 和 Maarten Bodewes 的评论。
一种选择是使用 Bouncycastle C# library,它有自己独立的 AES 实现以及 GCM 模式。查看 类 GCMBlockCipher、AesEngine 和 AEADParameters 的源代码。
另一种选择是使用P/Invoke手动调用BCryptEncrypt。
最后,请注意 .NET Core 将从 3.0 开始支持。来源已在 github.
中可用