Dot-Net

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

  • April 6, 2020

MSDN 連結提供了對具體 AES 類的引用:

  • 系統.安全.密碼學.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. 如果不是,那我有什麼選擇?

該答案反映了上述 Luke Park、bartonjs、Timo 和 Maarten Bodewes 的評論。

一種選擇是使用Bouncycastle C# 庫,它有自己的獨立的 AES 實現以及 GCM 模式。查看 GCMBlockCipher、AesEngine 和 AEADParameters 類的原始碼。

另一種選擇是使用 P/Invoke 手動呼叫BCryptEncrypt

最後,請注意 .NET Core 將從 3.0 開始支持。原始碼已經在github中可用。

引用自:https://stackoverflow.com/questions/46067811