【问题标题】:Is it possible to encrypt data with AES (256 bit) GCM mode in .net framework 4.7?是否可以在 .net framework 4.7 中使用 AES(256 位)GCM 模式加密数据?
【发布时间】:2018-02-14 12:10:44
【问题描述】:

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

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

【问题讨论】:

  • 不,不,use BouncyCastle
  • 显然 BouncyCastle 不是唯一支持 GCM 模式的 AES 实现,所以不是。但它是最常见的。
  • 另一种选择是手动 P/Invoke 到 BCryptEncrypt
  • 请注意,它在 .NET Core 中(自 2.1.3 起):github.com/dotnet/corefx/blob/master/src/…
  • @Timo 似乎不是为了发布,它说它将在 3.0 here (GCM / CCM 的 github 功能请求)

标签: .net encryption cryptography aes aes-gcm


【解决方案1】:

这个答案反映了上面 Luke Park、bartonjs、Timo 和 Maarten Bodewes 的 cmets。

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

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

最后,请注意 .NET Core 将从 3.0 开始支持。源代码已在github 中提供。

【讨论】:

  • 作为 2021 年 1 月的更新,AesGcm class 的文档现已在 MSDN 上发布,并且在 .Net 5.0 和 .Net Core 3.0 中得到支持。它是 .Net Standard 2.1 的一部分。
  • @reirab 你知道如何在 PowerShell 中使用 AesGcm 吗?在我的 powershell ise 中,输入 [System.Security.Cryptography. ,我找不到 AesGcm。
  • @Mark 我没有,抱歉。我建议asking a new question,因为这里的其他人可能知道答案。这也将使其他有相同问题的人在未来更容易找到答案。
  • @reirab 谢谢。我问了一个新问题stackoverflow.com/questions/68750953/…
猜你喜欢
  • 1970-01-01
  • 2011-04-14
  • 1970-01-01
  • 2020-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-27
相关资源
最近更新 更多