Aes Klas

Definitie

Vertegenwoordigt de abstracte basisklasse waaruit alle implementaties van de Advanced Encryption Standard (AES) moeten worden overgenomen.

public ref class Aes abstract : System::Security::Cryptography::SymmetricAlgorithm
public abstract class Aes : System.Security.Cryptography.SymmetricAlgorithm
type Aes = class
    inherit SymmetricAlgorithm
Public MustInherit Class Aes
Inherits SymmetricAlgorithm
Overname
Afgeleid

Voorbeelden

In het volgende voorbeeld ziet u hoe u voorbeeldgegevens versleutelt en ontsleutelt met behulp van de Aes klasse.

using System;
using System.IO;
using System.Security.Cryptography;

namespace Aes_Example
{
    class AesExample
    {
        public static void Main()
        {
            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);
            }
        }
        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 an encryptor 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 decryptor 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;
        }
    }
}
Imports System.IO
Imports System.Security.Cryptography



Class AesExample

    Public Shared Sub Main()
        Dim original As String = "Here is some data to encrypt!"

        ' Create a new instance of the Aes
        ' class.  This generates a new key and initialization 
        ' vector (IV).
        Using myAes As Aes = Aes.Create()
            ' Encrypt the string to an array of bytes.
            Dim encrypted As Byte() = EncryptStringToBytes_Aes(original, myAes.Key, myAes.IV)

            ' Decrypt the bytes to a string.
            Dim roundtrip As String = 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)
        End Using
    End Sub

    Shared Function EncryptStringToBytes_Aes(ByVal plainText As String, ByVal Key() As Byte, ByVal IV() As Byte) As Byte()
        ' Check arguments.
        If plainText Is Nothing OrElse plainText.Length <= 0 Then
            Throw New ArgumentNullException("plainText")
        End If
        If Key Is Nothing OrElse Key.Length <= 0 Then
            Throw New ArgumentNullException("Key")
        End If
        If IV Is Nothing OrElse IV.Length <= 0 Then
            Throw New ArgumentNullException("IV")
        End If
        Dim encrypted() As Byte
        
        ' Create an Aes object
        ' with the specified key and IV.
        Using aesAlg As Aes = Aes.Create()

            aesAlg.Key = Key
            aesAlg.IV = IV

            ' Create an encryptor to perform the stream transform.
            Dim encryptor As ICryptoTransform = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV)
            ' Create the streams used for encryption.
            Using msEncrypt As New MemoryStream()
                Using csEncrypt As New CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)
                    Using swEncrypt As New StreamWriter(csEncrypt)
                        'Write all data to the stream.
                        swEncrypt.Write(plainText)
                    End Using
                    encrypted = msEncrypt.ToArray()
                End Using
            End Using
        End Using

        ' Return the encrypted bytes from the memory stream.
        Return encrypted

    End Function 'EncryptStringToBytes_Aes

    Shared Function DecryptStringFromBytes_Aes(ByVal cipherText() As Byte, ByVal Key() As Byte, ByVal IV() As Byte) As String
        ' Check arguments.
        If cipherText Is Nothing OrElse cipherText.Length <= 0 Then
            Throw New ArgumentNullException("cipherText")
        End If
        If Key Is Nothing OrElse Key.Length <= 0 Then
            Throw New ArgumentNullException("Key")
        End If
        If IV Is Nothing OrElse IV.Length <= 0 Then
            Throw New ArgumentNullException("IV")
        End If
        ' Declare the string used to hold
        ' the decrypted text.
        Dim plaintext As String = Nothing

        ' Create an Aes object
        ' with the specified key and IV.
        Using aesAlg As Aes = Aes.Create()
            aesAlg.Key = Key
            aesAlg.IV = IV

            ' Create a decryptor to perform the stream transform.
            Dim decryptor As ICryptoTransform = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV)

            ' Create the streams used for decryption.
            Using msDecrypt As New MemoryStream(cipherText)

                Using csDecrypt As New CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)

                    Using srDecrypt As New StreamReader(csDecrypt)


                        ' Read the decrypted bytes from the decrypting stream
                        ' and place them in a string.
                        plaintext = srDecrypt.ReadToEnd()
                    End Using
                End Using
            End Using
        End Using

        Return plaintext

    End Function 'DecryptStringFromBytes_Aes 
End Class
open System
open System.IO
open System.Security.Cryptography

let encryptStringToBytes_Aes (plainText: string, key : byte[], iv : byte[]) : byte[] =

    // Check arguments.
    if (isNull plainText || plainText.Length <= 0) then nullArg "plainText"
    if (isNull key || key.Length <= 0) then nullArg "key"
    if (isNull iv || iv.Length <= 0) then nullArg "iv"
    
    // Create an Aes object
    // with the specified key and IV.
    use aesAlg = Aes.Create()
    aesAlg.Key <- key
    aesAlg.IV <- iv

    // Create an encryptor to perform the stream transform.
    let encryptor = aesAlg.CreateEncryptor(aesAlg.Key, aesAlg.IV)

    // Create the streams used for encryption.
    use msEncrypt = new MemoryStream()
    use csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write)
    use swEncrypt = new StreamWriter(csEncrypt)
    
    //Write all data to the stream.
    swEncrypt.Write(plainText)
    swEncrypt.Flush()
    
    // Return the encrypted bytes from the memory stream.
    msEncrypt.ToArray()

let decryptStringFromBytes_Aes (cipherText : byte[], key : byte[], iv : byte[]) : string =

    // Check arguments.
    if (isNull cipherText || cipherText.Length <= 0) then nullArg "cipherText"
    if (isNull key || key.Length <= 0) then nullArg "key"
    if (isNull iv || iv.Length <= 0) then nullArg "iv"

    // Create an Aes object
    // with the specified key and IV.
    use aesAlg = Aes.Create()
    aesAlg.Key <- key
    aesAlg.IV <- iv

    // Create a decryptor to perform the stream transform.
    let decryptor = aesAlg.CreateDecryptor(aesAlg.Key, aesAlg.IV)

    // Create the streams used for decryption.
    use msDecrypt = new MemoryStream(cipherText)
    use csDecrypt = new CryptoStream(msDecrypt, decryptor, CryptoStreamMode.Read)
    use srDecrypt = new StreamReader(csDecrypt)

    // Read the decrypted bytes from the decrypting stream
    // and return the resulting string.
    srDecrypt.ReadToEnd()

[<EntryPoint>]
let main argv = 

    let original = "Here is some data to encrypt!"

    // Create a new instance of the Aes
    // class.  This generates a new key and initialization 
    // vector (IV).
    use myAes = Aes.Create()

    // Encrypt the string to an array of bytes.
    let encrypted = encryptStringToBytes_Aes(original, myAes.Key, myAes.IV)

    // Decrypt the bytes to a string.
    let 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)
    0

Constructors

Name Description
Aes()

Initialiseert een nieuw exemplaar van de Aes klasse.

Velden

Name Description
BlockSizeValue

Vertegenwoordigt de blokgrootte, in bits, van de cryptografische bewerking.

(Overgenomen van SymmetricAlgorithm)
FeedbackSizeValue

Vertegenwoordigt de grootte van de feedback, in bits, van de cryptografische bewerking.

(Overgenomen van SymmetricAlgorithm)
IVValue

Vertegenwoordigt de initialisatievector (IV) voor het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
KeySizeValue

Vertegenwoordigt de grootte, in bits, van de geheime sleutel die wordt gebruikt door het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
KeyValue

Vertegenwoordigt de geheime sleutel voor het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
LegalBlockSizesValue

Hiermee geeft u de blokgrootten in bits die worden ondersteund door het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
LegalKeySizesValue

Hiermee geeft u de sleutelgrootten in bits die worden ondersteund door het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
ModeValue

Vertegenwoordigt de coderingsmodus die wordt gebruikt in het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
PaddingValue

Vertegenwoordigt de opvullingsmodus die wordt gebruikt in het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)

Eigenschappen

Name Description
BlockSize

Hiermee haalt u de blokgrootte, in bits, van de cryptografische bewerking op of stelt u deze in.

(Overgenomen van SymmetricAlgorithm)
FeedbackSize

Hiermee haalt u de feedbackgrootte, in bits, van de cryptografische bewerking voor de coderingsmodi CIpher Feedback (OFB) en Output Feedback (OFB) op of stelt u deze in.

(Overgenomen van SymmetricAlgorithm)
IV

Haalt de initialisatievector (IV) op of stelt deze in voor het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
Key

Hiermee haalt u de geheime sleutel voor het symmetrische algoritme op of stelt u deze in.

(Overgenomen van SymmetricAlgorithm)
KeySize

Hiermee wordt de grootte, in bits, opgehaald of ingesteld van de geheime sleutel die wordt gebruikt door het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
LegalBlockSizes

Hiermee haalt u de blokgrootten op, in bits, die worden ondersteund door het symmetrische algoritme.

LegalBlockSizes

Hiermee haalt u de blokgrootten op, in bits, die worden ondersteund door het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
LegalKeySizes

Hiermee haalt u de sleutelgrootten op, in bits, die worden ondersteund door het symmetrische algoritme.

LegalKeySizes

Hiermee haalt u de sleutelgrootten op, in bits, die worden ondersteund door het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
Mode

Hiermee haalt u de modus op of stelt u deze in voor de werking van het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)
Padding

Hiermee haalt u de opvullingsmodus op die wordt gebruikt in het symmetrische algoritme.

(Overgenomen van SymmetricAlgorithm)

Methoden

Name Description
Clear()

Alle resources die door de SymmetricAlgorithm klasse worden gebruikt, worden vrijgegeven.

(Overgenomen van SymmetricAlgorithm)
Create()

Hiermee maakt u een cryptografisch object dat wordt gebruikt om het symmetrische algoritme uit te voeren.

Create(String)

Hiermee maakt u een cryptografisch object dat de implementatie van AES aangeeft die moet worden gebruikt om het symmetrische algoritme uit te voeren.

CreateDecryptor()

Hiermee maakt u een symmetrisch decryptorobject met de huidige Key eigenschap en initialisatievector (IV).

(Overgenomen van SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])

Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een symmetrisch decryptorobject met de opgegeven Key eigenschap en initialisatievector (IV).

(Overgenomen van SymmetricAlgorithm)
CreateEncryptor()

Hiermee maakt u een symmetrisch encryptorobject met de huidige Key eigenschap en initialisatievector (IV).

(Overgenomen van SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])

Wanneer deze wordt overschreven in een afgeleide klasse, maakt u een symmetrisch encryptorobject met de opgegeven Key eigenschap en initialisatievector (IV).

(Overgenomen van SymmetricAlgorithm)
Dispose()

Alle resources die door het huidige exemplaar van de SymmetricAlgorithm klasse worden gebruikt, worden vrijgegeven.

(Overgenomen van SymmetricAlgorithm)
Dispose(Boolean)

Publiceert de niet-beheerde resources die worden gebruikt door de SymmetricAlgorithm beheerde resources en brengt eventueel de beheerde resources vrij.

(Overgenomen van SymmetricAlgorithm)
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GenerateIV()

Wanneer deze wordt overschreven in een afgeleide klasse, genereert u een willekeurige initialisatievector (IV) die moet worden gebruikt voor het algoritme.

(Overgenomen van SymmetricAlgorithm)
GenerateKey()

Wanneer deze wordt overschreven in een afgeleide klasse, genereert u een willekeurige sleutel (Key) die voor het algoritme moet worden gebruikt.

(Overgenomen van SymmetricAlgorithm)
GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
ValidKeySize(Int32)

Bepaalt of de opgegeven sleutelgrootte geldig is voor het huidige algoritme.

(Overgenomen van SymmetricAlgorithm)

Expliciete interface-implementaties

Name Description
IDisposable.Dispose()

Deze API ondersteunt de productinfrastructuur en is niet bedoeld om rechtstreeks vanuit de code te gebruiken.

Publiceert de niet-beheerde resources die worden gebruikt door de SymmetricAlgorithm beheerde resources en brengt eventueel de beheerde resources vrij.

(Overgenomen van SymmetricAlgorithm)

Van toepassing op