Leer en inglés

Compartir a través de


TripleDESCryptoServiceProvider Clase

Definición

Precaución

Derived cryptographic types are obsolete. Use the Create method on the base type instead.

Define un objeto contenedor para obtener acceso a la versión del proveedor de servicios criptográficos (CSP) del algoritmo TripleDES. Esta clase no puede heredarse.

C#
public sealed class TripleDESCryptoServiceProvider : System.Security.Cryptography.TripleDES
C#
[System.Obsolete("Derived cryptographic types are obsolete. Use the Create method on the base type instead.", DiagnosticId="SYSLIB0021", UrlFormat="https://aka.ms/dotnet-warnings/{0}")]
public sealed class TripleDESCryptoServiceProvider : System.Security.Cryptography.TripleDES
C#
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class TripleDESCryptoServiceProvider : System.Security.Cryptography.TripleDES
Herencia
TripleDESCryptoServiceProvider
Atributos

Ejemplos

En el ejemplo de código siguiente se crea un TripleDESCryptoServiceProvider objeto y se usa para cifrar y descifrar datos en un archivo.

C#
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;

class TrippleDESCSPSample
{

    static void Main()
    {
        try
        {
            // Create a new TripleDESCryptoServiceProvider object
            // to generate a key and initialization vector (IV).
            TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();

            // Create a string to encrypt.
            string sData = "Here is some data to encrypt.";
            string FileName = "CText.txt";

            // Encrypt text to a file using the file name, key, and IV.
            EncryptTextToFile(sData, FileName, tDESalg.Key, tDESalg.IV);

            // Decrypt the text from a file using the file name, key, and IV.
            string Final = DecryptTextFromFile(FileName, tDESalg.Key, tDESalg.IV);

            // Display the decrypted string to the console.
            Console.WriteLine(Final);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }

    public static void EncryptTextToFile(String Data, String FileName, byte[] Key, byte[] IV)
    {
        try
        {
            // Create or open the specified file.
            FileStream fStream = File.Open(FileName,FileMode.OpenOrCreate);

            // Create a CryptoStream using the FileStream
            // and the passed key and initialization vector (IV).
            CryptoStream cStream = new CryptoStream(fStream,
                new TripleDESCryptoServiceProvider().CreateEncryptor(Key,IV),
                CryptoStreamMode.Write);

            // Create a StreamWriter using the CryptoStream.
            StreamWriter sWriter = new StreamWriter(cStream);

            // Write the data to the stream
            // to encrypt it.
            sWriter.WriteLine(Data);

            // Close the streams and
            // close the file.
            sWriter.Close();
            cStream.Close();
            fStream.Close();
        }
        catch(CryptographicException e)
        {
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
        }
        catch(UnauthorizedAccessException  e)
        {
            Console.WriteLine("A file access error occurred: {0}", e.Message);
        }
    }

    public static string DecryptTextFromFile(String FileName, byte[] Key, byte[] IV)
    {
        try
        {
            // Create or open the specified file.
            FileStream fStream = File.Open(FileName, FileMode.OpenOrCreate);

            // Create a CryptoStream using the FileStream
            // and the passed key and initialization vector (IV).
            CryptoStream cStream = new CryptoStream(fStream,
                new TripleDESCryptoServiceProvider().CreateDecryptor(Key,IV),
                CryptoStreamMode.Read);

            // Create a StreamReader using the CryptoStream.
            StreamReader sReader = new StreamReader(cStream);

            // Read the data from the stream
            // to decrypt it.
            string val = sReader.ReadLine();

            // Close the streams and
            // close the file.
            sReader.Close();
            cStream.Close();
            fStream.Close();

            // Return the string.
            return val;
        }
        catch(CryptographicException e)
        {
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
            return null;
        }
        catch(UnauthorizedAccessException  e)
        {
            Console.WriteLine("A file access error occurred: {0}", e.Message);
            return null;
        }
    }
}

En el ejemplo de código siguiente se crea un TripleDESCryptoServiceProvider objeto y se usa para cifrar y descifrar datos en la memoria.

C#
using System;
using System.Security.Cryptography;
using System.Text;
using System.IO;

class TrippleDESCSPSample
{

    static void Main()
    {
        try
        {
            // Create a new TripleDESCryptoServiceProvider object
            // to generate a key and initialization vector (IV).
            TripleDESCryptoServiceProvider tDESalg = new TripleDESCryptoServiceProvider();

            // Create a string to encrypt.
            string sData = "Here is some data to encrypt.";

            // Encrypt the string to an in-memory buffer.
            byte[] Data = EncryptTextToMemory(sData, tDESalg.Key, tDESalg.IV);

            // Decrypt the buffer back to a string.
            string Final = DecryptTextFromMemory(Data, tDESalg.Key, tDESalg.IV);

            // Display the decrypted string to the console.
            Console.WriteLine(Final);
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
        }
    }

    public static byte[] EncryptTextToMemory(string Data,  byte[] Key, byte[] IV)
    {
        try
        {
            // Create a MemoryStream.
            MemoryStream mStream = new MemoryStream();

            // Create a CryptoStream using the MemoryStream
            // and the passed key and initialization vector (IV).
            CryptoStream cStream = new CryptoStream(mStream,
                new TripleDESCryptoServiceProvider().CreateEncryptor(Key, IV),
                CryptoStreamMode.Write);

            // Convert the passed string to a byte array.
            byte[] toEncrypt = new ASCIIEncoding().GetBytes(Data);

            // Write the byte array to the crypto stream and flush it.
            cStream.Write(toEncrypt, 0, toEncrypt.Length);
            cStream.FlushFinalBlock();

            // Get an array of bytes from the
            // MemoryStream that holds the
            // encrypted data.
            byte[] ret = mStream.ToArray();

            // Close the streams.
            cStream.Close();
            mStream.Close();

            // Return the encrypted buffer.
            return ret;
        }
        catch(CryptographicException e)
        {
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
            return null;
        }
    }

    public static string DecryptTextFromMemory(byte[] Data,  byte[] Key, byte[] IV)
    {
        try
        {
            // Create a new MemoryStream using the passed
            // array of encrypted data.
            MemoryStream msDecrypt = new MemoryStream(Data);

            // Create a CryptoStream using the MemoryStream
            // and the passed key and initialization vector (IV).
            CryptoStream csDecrypt = new CryptoStream(msDecrypt,
                new TripleDESCryptoServiceProvider().CreateDecryptor(Key, IV),
                CryptoStreamMode.Read);

            // Create buffer to hold the decrypted data.
            byte[] fromEncrypt = new byte[Data.Length];

            // Read the decrypted data out of the crypto stream
            // and place it into the temporary buffer.
            csDecrypt.Read(fromEncrypt, 0, fromEncrypt.Length);

            //Convert the buffer into a string and return it.
            return new ASCIIEncoding().GetString(fromEncrypt);
        }
        catch(CryptographicException e)
        {
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
            return null;
        }
    }
}

Comentarios

Este algoritmo admite longitudes de clave de 128 bits a 192 bits en incrementos de 64 bits.

Nota

Hay disponible un algoritmo de cifrado simétrico más reciente, Estándar de cifrado avanzado (AES). Considere la posibilidad de usar la AesCryptoServiceProvider clase en lugar de la TripleDESCryptoServiceProvider clase . Use TripleDESCryptoServiceProvider solo para la compatibilidad con los datos y las aplicaciones heredadas.

Constructores

TripleDESCryptoServiceProvider()
Obsoletos.

Inicializa una nueva instancia de la clase TripleDESCryptoServiceProvider.

Campos

BlockSizeValue
Obsoletos.

Representa el tamaño del bloque de la operación criptográfica en bits.

(Heredado de SymmetricAlgorithm)
FeedbackSizeValue
Obsoletos.

Representa el tamaño de respuesta de la operación criptográfica en bits.

(Heredado de SymmetricAlgorithm)
IVValue
Obsoletos.

Representa el vector de inicialización (IV) del algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
KeySizeValue
Obsoletos.

Representa el tamaño en bits de la clave secreta que usa el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
KeyValue
Obsoletos.

Representa la clave secreta del algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
LegalBlockSizesValue
Obsoletos.

Especifica los tamaños de bloque, en bits, admitidos por el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
LegalKeySizesValue
Obsoletos.

Especifica los tamaños de clave, en bits, admitidos por el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
ModeValue
Obsoletos.

Representa el modo de cifrado usado en el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
PaddingValue
Obsoletos.

Representa el modo de relleno usado en el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)

Propiedades

BlockSize
Obsoletos.

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

BlockSize
Obsoletos.

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

(Heredado de SymmetricAlgorithm)
FeedbackSize
Obsoletos.

Obtiene o establece el tamaño de los comentarios, en bits, de la operación criptográfica de los modos de cifrado Comentarios de cifrado (CFB) y Comentarios de salida (OFB).

FeedbackSize
Obsoletos.

Obtiene o establece el tamaño de los comentarios, en bits, de la operación criptográfica de los modos de cifrado Comentarios de cifrado (CFB) y Comentarios de salida (OFB).

(Heredado de SymmetricAlgorithm)
IV
Obsoletos.

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

IV
Obsoletos.

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

(Heredado de SymmetricAlgorithm)
Key
Obsoletos.

Obtiene o establece la clave secreta del algoritmo TripleDES.

Key
Obsoletos.

Obtiene o establece la clave secreta del algoritmo TripleDES.

(Heredado de TripleDES)
KeySize
Obsoletos.

Obtiene o establece el tamaño, en bits, de la clave secreta.

KeySize
Obsoletos.

Obtiene o establece el tamaño de la clave secreta utilizada por el algoritmo simétrico en bits.

(Heredado de SymmetricAlgorithm)
LegalBlockSizes
Obsoletos.

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

LegalBlockSizes
Obsoletos.

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

(Heredado de TripleDES)
LegalKeySizes
Obsoletos.

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

LegalKeySizes
Obsoletos.

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

(Heredado de TripleDES)
Mode
Obsoletos.

Obtiene o establece el modo de funcionamiento del algoritmo simétrico.

Mode
Obsoletos.

Obtiene o establece el modo de funcionamiento del algoritmo simétrico.

(Heredado de SymmetricAlgorithm)
Padding
Obsoletos.

Obtiene o establece el modo de relleno usado en el algoritmo simétrico.

Padding
Obsoletos.

Obtiene o establece el modo de relleno usado en el algoritmo simétrico.

(Heredado de SymmetricAlgorithm)

Métodos

Clear()
Obsoletos.

Libera todos los recursos que utiliza la clase SymmetricAlgorithm.

(Heredado de SymmetricAlgorithm)
CreateDecryptor()
Obsoletos.

Crea un objeto descifrador simétrico con la propiedad Key y el vector de inicialización (IV) actuales.

CreateDecryptor()
Obsoletos.

Crea un objeto descifrador simétrico con la propiedad Key y el vector de inicialización (IV) actuales.

(Heredado de SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])
Obsoletos.

Crea un objeto descifrador TripleDES simétrico con la clave (Key) y el vector de inicialización (IV) especificados.

CreateEncryptor()
Obsoletos.

Crea un objeto cifrador simétrico con la propiedad Key y el vector de inicialización (IV) actuales.

CreateEncryptor()
Obsoletos.

Crea un objeto cifrador simétrico con la propiedad Key y el vector de inicialización (IV) actuales.

(Heredado de SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])
Obsoletos.

Crea un objeto cifrador TripleDES simétrico con la clave (Key) y el vector de inicialización (IV) especificados.

DecryptCbc(Byte[], Byte[], PaddingMode)
Obsoletos.

Descifra los datos mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)
Obsoletos.

Descifra los datos mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Obsoletos.

Descifra los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptCfb(Byte[], Byte[], PaddingMode, Int32)
Obsoletos.

Descifra los datos mediante el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)
Obsoletos.

Descifra los datos mediante el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Obsoletos.

Descifra los datos en el búfer especificado, utilizando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
DecryptEcb(Byte[], PaddingMode)
Obsoletos.

Descifra los datos mediante el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, PaddingMode)
Obsoletos.

Descifra los datos mediante el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Obsoletos.

Descifra los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
Dispose()
Obsoletos.

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

(Heredado de SymmetricAlgorithm)
Dispose(Boolean)
Obsoletos.

Libera los recursos no administrados que usa SymmetricAlgorithm y, de forma opcional, libera los recursos administrados.

(Heredado de SymmetricAlgorithm)
EncryptCbc(Byte[], Byte[], PaddingMode)
Obsoletos.

Cifra los datos mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)
Obsoletos.

Cifra los datos mediante el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Obsoletos.

Cifra los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptCfb(Byte[], Byte[], PaddingMode, Int32)
Obsoletos.

Cifra los datos mediante el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)
Obsoletos.

Cifra los datos mediante el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Obsoletos.

Cifra los datos en el búfer especificado, utilizando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
EncryptEcb(Byte[], PaddingMode)
Obsoletos.

Cifra los datos mediante el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, PaddingMode)
Obsoletos.

Cifra los datos mediante el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)
Obsoletos.

Cifra los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
Equals(Object)
Obsoletos.

Determina si el objeto especificado es igual que el objeto actual.

(Heredado de Object)
GenerateIV()
Obsoletos.

Genera un vector de inicialización aleatorio (IV) que se va a utilizar para el algoritmo.

GenerateKey()
Obsoletos.

Genera una propiedad Key aleatoria que se va a utilizar para el algoritmo.

GetCiphertextLengthCbc(Int32, PaddingMode)
Obsoletos.

Obtiene la longitud de un texto cifrado con un modo de relleno determinado y la longitud de texto no cifrado en modo CBC.

(Heredado de SymmetricAlgorithm)
GetCiphertextLengthCfb(Int32, PaddingMode, Int32)
Obsoletos.

Obtiene la longitud de un texto cifrado con un modo de relleno determinado y la longitud de texto no cifrado en modo CFB.

(Heredado de SymmetricAlgorithm)
GetCiphertextLengthEcb(Int32, PaddingMode)
Obsoletos.

Obtiene la longitud de un texto cifrado con un modo de relleno determinado y la longitud de texto no cifrado en modo ECB.

(Heredado de SymmetricAlgorithm)
GetHashCode()
Obsoletos.

Sirve como la función hash predeterminada.

(Heredado de Object)
GetType()
Obsoletos.

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()
Obsoletos.

Crea una copia superficial del Object actual.

(Heredado de Object)
ToString()
Obsoletos.

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
TryDecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)
Obsoletos.

Intenta descifrar los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryDecryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Obsoletos.

Cuando se invalida en una clase derivada, intenta descifrar los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryDecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)
Obsoletos.

Intenta descifrar los datos en el búfer especificado, usando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
TryDecryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)
Obsoletos.

Cuando se invalida en una clase derivada, intenta descifrar los datos en el búfer especificado, utilizando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
TryDecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Obsoletos.

Intenta descifrar los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryDecryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Obsoletos.

Cuando se invalida en una clase derivada, intenta descifrar los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryEncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)
Obsoletos.

Intenta cifrar los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryEncryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Obsoletos.

Cuando se invalida en una clase derivada, intenta cifrar los datos en el búfer especificado, utilizando el modo CBC con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryEncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)
Obsoletos.

Intenta cifrar los datos en el búfer especificado, utilizando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
TryEncryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)
Obsoletos.

Cuando se invalida en una clase derivada, intenta cifrar los datos en el búfer especificado, utilizando el modo CFB con el modo de relleno y el tamaño de comentarios especificados.

(Heredado de SymmetricAlgorithm)
TryEncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Obsoletos.

Intenta cifrar los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
TryEncryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)
Obsoletos.

Cuando se invalida en una clase derivada, intenta cifrar los datos en el búfer especificado, utilizando el modo ECB con el modo de relleno especificado.

(Heredado de SymmetricAlgorithm)
ValidKeySize(Int32)
Obsoletos.

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

(Heredado de SymmetricAlgorithm)

Implementaciones de interfaz explícitas

IDisposable.Dispose()

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Obsoletos.

Libera los recursos no administrados que usa SymmetricAlgorithm y, de forma opcional, libera los recursos administrados.

(Heredado de SymmetricAlgorithm)

Se aplica a

Producto Versiones (Obsoleto)
.NET Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5 (6, 7, 8, 9)
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Consulte también