是否可以在 .net framework 4.7 中使用 AES(256 位)GCM 模式加密数据?
Posted
技术标签:
【中文标题】是否可以在 .net framework 4.7 中使用 AES(256 位)GCM 模式加密数据?【英文标题】:Is it possible to encrypt data with AES (256 bit) GCM mode in .net framework 4.7? 【发布时间】: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。
-
此框架是否支持 AES GCM?
如果有,有例子吗?
如果不是,那我有什么选择?
【问题讨论】:
不,不,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 功能请求) 【参考方案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 谢谢。我问了一个新问题***.com/questions/68750953/…以上是关于是否可以在 .net framework 4.7 中使用 AES(256 位)GCM 模式加密数据?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 .net framework 4.7 上使用 Mediatr 进行集成测试?
在 Azure Web App(.NET Framework 4.7)上发布后,“SpeechSynthesizer”不起作用
. net framework 4.7安装未成功,提示已处理证书链,但是在不受信任程序信任的根证书?
.Net Core 3.x 与 .Net Framework 4.7 的兼容性
在 Windows Server 2016 上的 Visual Studio 安装程序中找不到 .NET Framework 4.7 目标包