Este artículo se tradujo automáticamente. Para ver el artículo en inglés, active la casilla Inglés. Además, puede mostrar el texto en inglés en una ventana emergente si mueve el puntero del mouse sobre el texto.
Traducción
Inglés

Clase AesCryptoServiceProvider

 

Publicado: octubre de 2016

Realiza el cifrado simétrico y descifrado mediante la implementación de Interfaces de programación de aplicación criptográfica (CAPI) del algoritmo estándar de cifrado avanzado (AES).

Espacio de nombres:   System.Security.Cryptography
Ensamblado:  System.Core (en System.Core.dll)

System.Object
  System.Security.Cryptography.SymmetricAlgorithm
    System.Security.Cryptography.Aes
      System.Security.Cryptography.AesCryptoServiceProvider

[HostProtectionAttribute(SecurityAction.LinkDemand, MayLeakOnAbort = true)]
public sealed class AesCryptoServiceProvider : Aes

NombreDescripción
System_CAPS_pubmethodAesCryptoServiceProvider()

Inicializa una nueva instancia de la clase AesCryptoServiceProvider.

NombreDescripción
System_CAPS_pubpropertyBlockSize

Obtiene o establece el tamaño del bloque de la operación criptográfica en bits.(Heredado de SymmetricAlgorithm).

System_CAPS_pubpropertyFeedbackSize

Obtiene o establece el tamaño de respuesta de la operación criptográfica en bits.(Heredado de SymmetricAlgorithm).

System_CAPS_pubpropertyIV

Obtiene o establece el vector de inicialización (IV) del algoritmo simétrico.(Heredado de SymmetricAlgorithm).

System_CAPS_pubpropertyKey

Obtiene o establece la clave simétrica que se utiliza para el cifrado y descifrado.(Invalida SymmetricAlgorithm.Key).

System_CAPS_pubpropertyKeySize

Obtiene o establece el tamaño de la clave secreta en bits.(Invalida SymmetricAlgorithm.KeySize).

System_CAPS_pubpropertyLegalBlockSizes

Obtiene los tamaños de bloque, en bits, admitidos por el algoritmo simétrico.(Heredado de SymmetricAlgorithm).

System_CAPS_pubpropertyLegalKeySizes

Obtiene los tamaños de clave, en bits, admitidos por el algoritmo simétrico.(Heredado de SymmetricAlgorithm).

System_CAPS_pubpropertyMode

Obtiene o establece el modo de funcionamiento del algoritmo simétrico.(Heredado de SymmetricAlgorithm).

System_CAPS_pubpropertyPadding

Obtiene o establece el modo de relleno usado en el algoritmo simétrico.(Heredado de SymmetricAlgorithm).

NombreDescripción
System_CAPS_pubmethodClear()

Libera todos los recursos que utiliza la clase SymmetricAlgorithm.(Heredado de SymmetricAlgorithm).

System_CAPS_pubmethodCreateDecryptor()

Crea un objeto de descifrador simétrico de AES con el vector de inicialización y la clave actual (IV).(Invalida SymmetricAlgorithm.CreateDecryptor()).

System_CAPS_pubmethodCreateDecryptor(Byte[], Byte[])

Crea un objeto de descifrador simétrico de AES con la clave especificada y el vector de inicialización (IV).(Invalida SymmetricAlgorithm.CreateDecryptor(Byte[], Byte[])).

System_CAPS_pubmethodCreateEncryptor()

Crea un objeto de sistema de cifrado AES simétrico con el vector de inicialización y la clave actual (IV).(Invalida SymmetricAlgorithm.CreateEncryptor()).

System_CAPS_pubmethodCreateEncryptor(Byte[], Byte[])

Crea un objeto cifrador simétrico con la clave especificada y el vector de inicialización (IV).(Invalida SymmetricAlgorithm.CreateEncryptor(Byte[], Byte[])).

System_CAPS_pubmethodDispose()

Libera todos los recursos usados por la instancia actual de la clase SymmetricAlgorithm.(Heredado de SymmetricAlgorithm).

System_CAPS_pubmethodEquals(Object)

Determina si el objeto especificado es igual al objeto actual.(Heredado de Object).

System_CAPS_pubmethodGenerateIV()

Genera un vector de inicialización aleatorio (IV) que se utilizará para el algoritmo.(Invalida SymmetricAlgorithm.GenerateIV()).

System_CAPS_pubmethodGenerateKey()

Genera una clave aleatoria que se utiliza para el algoritmo.(Invalida SymmetricAlgorithm.GenerateKey()).

System_CAPS_pubmethodGetHashCode()

Sirve como la función hash predeterminada.(Heredado de Object).

System_CAPS_pubmethodGetType()

Obtiene el Type de la instancia actual.(Heredado de Object).

System_CAPS_pubmethodToString()

Devuelve una cadena que representa el objeto actual.(Heredado de Object).

System_CAPS_pubmethodValidKeySize(Int32)

Determina si el tamaño de clave especificado es válido para el algoritmo actual.(Heredado de SymmetricAlgorithm).

En el ejemplo siguiente se muestra cómo cifrar y descifrar los datos de ejemplo mediante el AesCryptoServiceProvider clase.

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 AesCryptoServiceProvider
                // class.  This generates a new key and initialization 
                // vector (IV).
                using (AesCryptoServiceProvider myAes = new AesCryptoServiceProvider())
                {

                    // 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 AesCryptoServiceProvider object
            // with the specified key and IV.
            using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
            {
                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 AesCryptoServiceProvider object
            // with the specified key and IV.
            using (AesCryptoServiceProvider aesAlg = new AesCryptoServiceProvider())
            {
                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;

        }
    }
}

.NET Framework
Disponible desde 3.5

Cualquier miembro ( Compartido en Visual Basic) estático público de este tipo es seguro para subprocesos. No se garantiza que los miembros de instancia sean seguros para subprocesos.

Volver al principio
Mostrar: