The System.Security.Cryptography namespace has at least 3 different seemingly interchangeable ways to get an object that will perform AES encryption/decryption:
using (var aes = Aes.Create())
or
using (var aes = new AesCryptoServiceProvider())
or
using (var aes = new AesCng())
The first two were introduced in .NET framework version 3.5. The third is much newer; it was introduced in version 4.6.2. One might suspect therefore that it is better than the other 2, but the documentation does not say anywhere that it is recommended to use it in place of the other ones.
The first two each have a code sample. The two samples appear essentially identical.
Which one should I use, and why?