I found two class in C# related to AES, and example code of them MSDN provides are similar, what is the difference between these two classes?
Aes Class
https://msdn.microsoft.com/en-us/library/system.security.cryptography.aes(v=vs.110).aspx
AesManaged Class
https://msdn.microsoft.com/en-us/library/system.security.cryptography.aesmanaged(v=vs.110).aspx
AesManaged class is a managed implementation of AES algorithm. This article demonstrates how to use AesManaged class to apply AES algorithm to encrypt and decrypt data in . NET and C#. . NET provides high level classes for various encryption algorithms, both symmetric and asymmetric.
The Rijndael and RijndaelManaged types are marked as obsolete, starting in . NET 6.
NET CSPs, e.g. AesManaged or MD5CryptoServiceProvider, that do not rely on this libraries are not compliant. The security policy FIPS mode simply turns on a flag in the registry (HKLM\SYSTEM\CurrentControlSet\Control\Lsa\fipsalgorithmpolicy), nothing more. It is the responsibility of CSPs to check this flag.
Security. Cryptography Namespace. Provides cryptographic services, including secure encoding and decoding of data, as well as many other operations, such as hashing, random number generation, and message authentication.
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).
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With