问题
The MSDN link provides references to concrete AES classes:
- System.Security.Cryptography.AesCng
- System.Security.Cryptography.AesCryptoServiceProvider
- System.Security.Cryptography.AesManaged
However AesCryptoServiceProvider is for older machines and AesManaged is not certified for FIPS. So the only option is AesCng. The AesCng has a property called Mode, which will only take: CBC, ECB, OFB, CFB, CTS but no GCM.
- Is AES GCM supported on this framework?
- If yes, is there an example?
- If no, then what are my options?
回答1:
This answer reflects the comments from Luke Park, bartonjs, Timo, aand Maarten Bodewes above.
One option is to use the Bouncycastle C# library, which has its own self-contained implementation of AES as well as the GCM mode. Look at the source code for the classes GCMBlockCipher, AesEngine, and AEADParameters.
Another option is to use P/Invoke to manually call BCryptEncrypt.
Finally, note that .NET Core will have support starting in 3.0. The source is already available in github.
来源:https://stackoverflow.com/questions/46067811/is-it-possible-to-encrypt-data-with-aes-256-bit-gcm-mode-in-net-framework-4-7