What is the difference between Aes and AesManaged

后端 未结 3 856
说谎
说谎 2020-12-19 02:35

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?

3条回答
  •  -上瘾入骨i
    2020-12-19 03:00

    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).

提交回复
热议问题