Dot-Net
是否可以在 .net framework 4.7 中使用 AES(256 位)GCM 模式加密數據?
MSDN 連結提供了對具體 AES 類的引用:
- 系統.安全.密碼學.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 和 Maarten Bodewes 的評論。
一種選擇是使用Bouncycastle C# 庫,它有自己的獨立的 AES 實現以及 GCM 模式。查看 GCMBlockCipher、AesEngine 和 AEADParameters 類的原始碼。
另一種選擇是使用 P/Invoke 手動呼叫BCryptEncrypt。
最後,請注意 .NET Core 將從 3.0 開始支持。原始碼已經在github中可用。