-->
Mar 17, 2017 If you use a key multiple times you should use a different IV each time, so a (key, IV) pair isn't reused. The exact requirements for the IV depend on the chosen chaining mode, but a random 128 bit value is usually fine. It should be different for each message you encrypt. Store it alongside the ciphertext, typically as a prefix. When a symmetric cipher mode requires an IV, the length of the IV must be equal to the block size of the cipher. Hence, you must always use an IV of 128 bits (16 bytes) with AES. AES provides 128 bit, 192 bit and 256 bit of secret key size for encryption.
::aes::Init mode keydata iv. Construct a new AES key schedule using the specified key data and the given initialization vector. The initialization vector is not used with ECB mode but is important for CBC mode. See MODES OF OPERATION for details about cipher modes.::aes::Encrypt Key data. Use a prepared key acquired by calling Init to encrypt.
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Represents the abstract base class from which all implementations of the Advanced Encryption Standard (AES) must inherit.
- Derived
- Attributes
Examples
The following example demonstrates how to encrypt and decrypt sample data by using the Aes class.
Constructors
Aes() | Initializes a new instance of the Aes class. |
Fields
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) |
Properties
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 for the Cipher Feedback (CFB) and Output Feedback (OFB) cipher modes. (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. |
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. |
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) |
Methods
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) |
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) |
GetCiphertextLengthCbc(Int32, PaddingMode) | (Inherited from SymmetricAlgorithm) |
GetCiphertextLengthCfb(Int32, PaddingMode, Int32) | (Inherited from SymmetricAlgorithm) |
GetCiphertextLengthEcb(Int32, PaddingMode) | (Inherited from SymmetricAlgorithm) |
GetHashCode() | Serves as the default hash function. (Inherited from Object) |
GetType() | Gets the Type of the current instance. (Inherited from Object) |
MemberwiseClone() | Creates a shallow copy of the current Object. (Inherited from Object) |
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) |
Encrypting Using AES-256, Can I Use 256 Bits IV?
Explicit Interface Implementations
Cached
IDisposable.Dispose() | This API supports the product infrastructure and is not intended to be used directly from your code. Releases the unmanaged resources used by the SymmetricAlgorithm and optionally releases the managed resources. (Inherited from SymmetricAlgorithm) |