Aes Class
Represents the abstract base class from which all implementations of the Advanced Encryption Standard (AES) must inherit.
Assembly: mscorlib (in mscorlib.dll)
| Name | Description | |
|---|---|---|
![]() | Aes() | Initializes a new instance of the Aes class. |
| Name | Description | |
|---|---|---|
![]() | BlockSize | Gets or sets the block size, in bits, of the cryptographic operation.(Inherited from SymmetricAlgorithm.) |
![]() | FeedbackSize | Gets or sets the feedback size, in bits, of the cryptographic operation.(Inherited from SymmetricAlgorithm.) |
![]() | IV | Gets or sets the initialization vector (IV) for the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | Key | Gets or sets the secret key for the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | KeySize | Gets or sets the size, in bits, of the secret key used by the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | LegalBlockSizes | Gets the block sizes, in bits, that are supported by the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | LegalKeySizes | Gets the key sizes, in bits, that are supported by the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | Mode | Gets or sets the mode for operation of the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | Padding | Gets or sets the padding mode used in the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
| Name | Description | |
|---|---|---|
![]() | Clear() | Releases all resources used by the SymmetricAlgorithm class.(Inherited from SymmetricAlgorithm.) |
![]() ![]() | Create() | Creates a cryptographic object that is used to perform the symmetric algorithm. |
![]() ![]() | Create(String) | Creates a cryptographic object that specifies the implementation of AES to use to perform the symmetric algorithm. |
![]() | CreateDecryptor() | Creates a symmetric decryptor object with the current Key property and initialization vector (IV).(Inherited from SymmetricAlgorithm.) |
![]() | CreateDecryptor(Byte[], Byte[]) | When overridden in a derived class, creates a symmetric decryptor object with the specified Key property and initialization vector (IV).(Inherited from SymmetricAlgorithm.) |
![]() | CreateEncryptor() | Creates a symmetric encryptor object with the current Key property and initialization vector (IV).(Inherited from SymmetricAlgorithm.) |
![]() | CreateEncryptor(Byte[], Byte[]) | When overridden in a derived class, creates a symmetric encryptor object with the specified Key property and initialization vector (IV).(Inherited from SymmetricAlgorithm.) |
![]() | Dispose() | Releases all resources used by the current instance of the SymmetricAlgorithm class.(Inherited from SymmetricAlgorithm.) |
![]() | Dispose(Boolean) | Releases the unmanaged resources used by the SymmetricAlgorithm and optionally releases the managed resources.(Inherited from SymmetricAlgorithm.) |
![]() | Equals(Object) | Determines whether the specified object is equal to the current object.(Inherited from Object.) |
![]() | Finalize() | Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.) |
![]() | GenerateIV() | When overridden in a derived class, generates a random initialization vector (IV) to use for the algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | GenerateKey() | When overridden in a derived class, generates a random key (Key) to use for the algorithm. (Inherited from SymmetricAlgorithm.) |
![]() | GetHashCode() | Serves as the default hash function. (Inherited from Object.) |
![]() | GetType() | |
![]() | MemberwiseClone() | |
![]() | ToString() | Returns a string that represents the current object.(Inherited from Object.) |
![]() | ValidKeySize(Int32) | Determines whether the specified key size is valid for the current algorithm.(Inherited from SymmetricAlgorithm.) |
| Name | Description | |
|---|---|---|
![]() | BlockSizeValue | Represents the block size, in bits, of the cryptographic operation.(Inherited from SymmetricAlgorithm.) |
![]() | FeedbackSizeValue | Represents the feedback size, in bits, of the cryptographic operation.(Inherited from SymmetricAlgorithm.) |
![]() | IVValue | Represents the initialization vector (IV) for the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | KeySizeValue | Represents the size, in bits, of the secret key used by the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | KeyValue | Represents the secret key for the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | LegalBlockSizesValue | Specifies the block sizes, in bits, that are supported by the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | LegalKeySizesValue | Specifies the key sizes, in bits, that are supported by the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | ModeValue | Represents the cipher mode used in the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
![]() | PaddingValue | Represents the padding mode used in the symmetric algorithm.(Inherited from SymmetricAlgorithm.) |
The following example demonstrates how to encrypt and decrypt sample data by using the Aes class.
using System; using System.IO; using System.Security.Cryptography; namespace Aes_Example { class AesExample { public static void Main() { try { string original = "Here is some data to encrypt!"; // Create a new instance of the Aes // class. This generates a new key and initialization // vector (IV). using (Aes myAes = Aes.Create()) { // Encrypt the string to an array of bytes. byte[] encrypted = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV); // Decrypt the bytes to a string. string roundtrip = DecryptStringFromBytes_Aes(encrypted, myAes.Key, myAes.IV); //Display the original data and the decrypted data. Console.WriteLine("Original: {0}", original); Console.WriteLine("Round Trip: {0}", roundtrip); } } catch (Exception e) { Console.WriteLine("Error: {0}", e.Message); } } static byte[] EncryptStringToBytes_Aes(string plainText, byte[] Key, byte[] IV) { // Check arguments. if (plainText == null || plainText.Length <= 0) throw new ArgumentNullException("plainText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); byte[] encrypted; // Create an Aes object // with the specified key and IV. using (Aes aesAlg = Aes.Create()) { aesAlg.Key = Key; aesAlg.IV = IV; // Create a decrytor to perform the stream transform. ICryptoTransform encryptor = aesAlg.CreateEncryptor(aesAlg.Key , aesAlg.IV); // Create the streams used for encryption. using (MemoryStream msEncrypt = new MemoryStream()) { using (CryptoStream csEncrypt = new CryptoStream(msEncrypt , encryptor, CryptoStreamMode.Write)) { using (StreamWriter swEncrypt = new StreamWriter( csEncrypt)) { //Write all data to the stream. swEncrypt.Write(plainText); } encrypted = msEncrypt.ToArray(); } } } // Return the encrypted bytes from the memory stream. return encrypted; } static string DecryptStringFromBytes_Aes(byte[] cipherText, byte[] Key , byte[] IV) { // Check arguments. if (cipherText == null || cipherText.Length <= 0) throw new ArgumentNullException("cipherText"); if (Key == null || Key.Length <= 0) throw new ArgumentNullException("Key"); if (IV == null || IV.Length <= 0) throw new ArgumentNullException("IV"); // Declare the string used to hold // the decrypted text. string plaintext = null; // Create an Aes object // with the specified key and IV. using (Aes aesAlg = Aes.Create()) { aesAlg.Key = Key; aesAlg.IV = IV; // Create a decrytor to perform the stream transform. ICryptoTransform decryptor = aesAlg.CreateDecryptor(aesAlg.Key , aesAlg.IV); // Create the streams used for decryption. using (MemoryStream msDecrypt = new MemoryStream(cipherText)) { using (CryptoStream csDecrypt = new CryptoStream(msDecrypt , decryptor, CryptoStreamMode.Read)) { using (StreamReader srDecrypt = new StreamReader( csDecrypt)) { // Read the decrypted bytes from the decrypting stream // and place them in a string. plaintext = srDecrypt.ReadToEnd(); } } } } return plaintext; } } }
Available since 3.5
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Any public static ( Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.




