System.Security.Cryptography.Aes
is an abstract class, representing merely the concept of AES-ness. AesManaged
, AesCryptoServiceProvider
, and AesCng
are concrete implementations of AES in managed code, using Windows CAPI, and using Windows CNG (respectively). (On .NET Core that's a lie: AesManaged and AesCryptoServiceProvider both just use a automagic hidden class which uses Windows CNG, macOS Security.framework, or OpenSSL, as available)
If you're unclear on which one you want, you want to create an instance via Aes.Create()
and only use the base type. The only real exception is when using AesCng
with a named key (which is very rare).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…