Compartilhar via


TripleDES Classe

Definição

Representa a classe base para algoritmos DES triplo dos quais todas as implementações TripleDES devem derivar.

public ref class TripleDES abstract : System::Security::Cryptography::SymmetricAlgorithm
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public abstract class TripleDES : System.Security.Cryptography.SymmetricAlgorithm
public abstract class TripleDES : System.Security.Cryptography.SymmetricAlgorithm
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class TripleDES : System.Security.Cryptography.SymmetricAlgorithm
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
type TripleDES = class
    inherit SymmetricAlgorithm
type TripleDES = class
    inherit SymmetricAlgorithm
[<System.Runtime.InteropServices.ComVisible(true)>]
type TripleDES = class
    inherit SymmetricAlgorithm
Public MustInherit Class TripleDES
Inherits SymmetricAlgorithm
Herança
Derivado
Atributos

Exemplos

O método de exemplo de código a seguir usa TripleDESCryptoServiceProvider com a chave especificada (Key) e o vetor de inicialização (IV) para criptografar um arquivo especificado por inName. Em seguida, ele gera o resultado criptografado para o arquivo especificado por outName.

void EncryptData( String^ inName, String^ outName, array<Byte>^tdesKey, array<Byte>^tdesIV )
{
   
   //Create the file streams to handle the input and output files.
   FileStream^ fin = gcnew FileStream( inName,FileMode::Open,FileAccess::Read );
   FileStream^ fout = gcnew FileStream( outName,FileMode::OpenOrCreate,FileAccess::Write );
   fout->SetLength( 0 );
   
   //Create variables to help with read and write.
   array<Byte>^bin = gcnew array<Byte>(100);
   long rdlen = 0; //This is the total number of bytes written.

   long totlen = (long)fin->Length; //This is the total length of the input file.

   int len; //This is the number of bytes to be written at a time.

   TripleDESCryptoServiceProvider^ tdes = gcnew TripleDESCryptoServiceProvider;
   CryptoStream^ encStream = gcnew CryptoStream( fout,tdes->CreateEncryptor( tdesKey, tdesIV ),CryptoStreamMode::Write );
   Console::WriteLine( "Encrypting..." );
   
   //Read from the input file, then encrypt and write to the output file.
   while ( rdlen < totlen )
   {
      len = fin->Read( bin, 0, 100 );
      encStream->Write( bin, 0, len );
      rdlen = rdlen + len;
      Console::WriteLine( "{0} bytes processed", rdlen );
   }

   encStream->Close();
}
private static void EncryptData(string inName, string outName, byte[] tdesKey, byte[] tdesIV)
{
    //Create the file streams to handle the input and output files.
    FileStream fin = new FileStream(inName, FileMode.Open, FileAccess.Read);
    FileStream fout = new FileStream(outName, FileMode.OpenOrCreate, FileAccess.Write);
    fout.SetLength(0);

    //Create variables to help with read and write.
    byte[] bin = new byte[100]; //This is intermediate storage for the encryption.
    long rdlen = 0;              //This is the total number of bytes written.
    long totlen = fin.Length;    //This is the total length of the input file.
    int len;                     //This is the number of bytes to be written at a time.

    TripleDESCryptoServiceProvider tdes = new TripleDESCryptoServiceProvider();
    CryptoStream encStream = new CryptoStream(fout, tdes.CreateEncryptor(tdesKey, tdesIV), CryptoStreamMode.Write);

    Console.WriteLine("Encrypting...");

    //Read from the input file, then encrypt and write to the output file.
    while(rdlen < totlen)
    {
        len = fin.Read(bin, 0, 100);
        encStream.Write(bin, 0, len);
        rdlen = rdlen + len;
        Console.WriteLine("{0} bytes processed", rdlen);
    }

    encStream.Close();
}
Private Shared Sub EncryptData(inName As String, outName As String, _
   tdesKey() As Byte, tdesIV() As Byte)
   
    'Create the file streams to handle the input and output files.
    Dim fin As New FileStream(inName, FileMode.Open, FileAccess.Read)
    Dim fout As New FileStream(outName, FileMode.OpenOrCreate, _
       FileAccess.Write)
    fout.SetLength(0)
        
    'Create variables to help with read and write.
    Dim bin(100) As Byte 'This is intermediate storage for the encryption.
    Dim rdlen As Long = 0 'This is the total number of bytes written.
    Dim totlen As Long = fin.Length 'This is the total length of the input file.
    Dim len As Integer 'This is the number of bytes to be written at a time.
    Dim tdes As New TripleDESCryptoServiceProvider()
    Dim encStream As New CryptoStream(fout, _
       tdes.CreateEncryptor(tdesKey, tdesIV), CryptoStreamMode.Write)
        
    Console.WriteLine("Encrypting...")
        
    'Read from the input file, then encrypt and write to the output file.
    While rdlen < totlen
        len = fin.Read(bin, 0, 100)
        encStream.Write(bin, 0, len)
        rdlen = rdlen + len
        Console.WriteLine("{0} bytes processed", rdlen)
    End While
        
    encStream.Close()
End Sub

A descriptografia pode ser tratada da mesma maneira; use CreateDecryptor em vez de CreateEncryptor. A mesma chave (Key) e o vetor de inicialização (IV) usados para criptografar o arquivo devem ser usados para descriptografá-lo.

Comentários

TripleDES usa três iterações sucessivas do DES algoritmo. Ele pode usar duas ou três chaves de 56 bits.

Observação

Um algoritmo de criptografia simétrica mais recente, AES (Advanced Encryption Standard), está disponível. Considere usar a Aes classe e suas classes derivadas em vez da TripleDES classe . Use TripleDES apenas para compatibilidade com aplicativos e dados herdados.

Esse algoritmo dá suporte a comprimentos de chave de 128 bits a 192 bits em incrementos de 64 bits.

Construtores

TripleDES()

Inicializa uma nova instância da classe TripleDES.

Campos

BlockSizeValue

Representa o tamanho do bloco, em bits, da operação criptográfica.

(Herdado de SymmetricAlgorithm)
FeedbackSizeValue

Representa o tamanho dos comentários, em bits, da operação de criptografia.

(Herdado de SymmetricAlgorithm)
IVValue

Representa o vetor de inicialização (IV) do algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
KeySizeValue

Representa o tamanho, em bits, da chave secreta usada pelo algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
KeyValue

Representa a chave secreta para o algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
LegalBlockSizesValue

Especifica os tamanhos de bloco, em bits, que têm suporte pelo algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
LegalKeySizesValue

Especifica os tamanhos de chave, em bits, que têm suporte pelo algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
ModeValue

Representa o modo de criptografia usado no algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
PaddingValue

Representa o modo de preenchimento usado no algoritmo simétrico.

(Herdado de SymmetricAlgorithm)

Propriedades

BlockSize

Obtém ou define o tamanho do bloco, em bits, da operação de criptografia.

(Herdado de SymmetricAlgorithm)
FeedbackSize

Obtém ou define o tamanho dos comentários, em bits, da operação de criptografia para os modos de codificação CFB (Comentário de Codificação) e OFB (Comentário de Saída).

(Herdado de SymmetricAlgorithm)
IV

Obtém ou define o vetor de inicialização (IV) para o algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
Key

Obtém ou define a chave secreta para o algoritmo TripleDES.

KeySize

Obtém ou define o tamanho, em bits, da chave secreta usada pelo algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
LegalBlockSizes

Obtém os tamanhos de bloco, em bits, que tem suporte com o algoritmo simétrico.

LegalBlockSizes

Obtém os tamanhos de bloco, em bits, que tem suporte com o algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
LegalKeySizes

Obtém os tamanhos de chave, em bits, que têm suporte pelo algoritmo simétrico.

LegalKeySizes

Obtém os tamanhos de chave, em bits, que têm suporte pelo algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
Mode

Obtém ou define o modo de operação do algoritmo simétrico.

(Herdado de SymmetricAlgorithm)
Padding

Obtém ou define o modo de preenchimento usado no algoritmo simétrico.

(Herdado de SymmetricAlgorithm)

Métodos

Clear()

Libera todos os recursos usados pela classe SymmetricAlgorithm.

(Herdado de SymmetricAlgorithm)
Create()

Cria uma instância de um objeto criptográfico para executar o algoritmo TripleDES.

Create(String)
Obsoleto.

Cria uma instância de um objeto criptográfico para realizar a implementação especificada do algoritmo TripleDES.

CreateDecryptor()

Cria um objeto descriptografador simétrico com a propriedade Key atual e o vetor de inicialização (IV).

(Herdado de SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])

Quando substituído em uma classe derivada, cria um objeto descriptografador simétrico com a propriedade Key especificada e o vetor de inicialização (IV).

(Herdado de SymmetricAlgorithm)
CreateEncryptor()

Cria um objeto criptografador simétrico com a propriedade Key atual e o vetor de inicialização (IV).

(Herdado de SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])

Quando substituído em uma classe derivada, cria um objeto criptografador simétrico com a propriedade Key especificada e o vetor de inicialização (IV).

(Herdado de SymmetricAlgorithm)
DecryptCbc(Byte[], Byte[], PaddingMode)

Descriptografa dados usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)

Descriptografa dados usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Descriptografa dados no buffer especificado, usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
DecryptCfb(Byte[], Byte[], PaddingMode, Int32)

Descriptografa dados usando o modo CFB com o modo de preenchimento e o tamanho dos comentários especificados.

(Herdado de SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)

Descriptografa dados usando o modo CFB com o modo de preenchimento e o tamanho dos comentários especificados.

(Herdado de SymmetricAlgorithm)
DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Descriptografa os dados no buffer especificado, usando o modo CFB com o modo de preenchimento e o tamanho dos comentários especificados.

(Herdado de SymmetricAlgorithm)
DecryptEcb(Byte[], PaddingMode)

Descriptografa dados usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, PaddingMode)

Descriptografa dados usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
DecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Descriptografa dados no buffer especificado, usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
Dispose()

Libera todos os recursos usados pela instância atual da classe SymmetricAlgorithm.

(Herdado de SymmetricAlgorithm)
Dispose(Boolean)

Libera os recursos não gerenciados usados pelo SymmetricAlgorithm e opcionalmente libera os recursos gerenciados.

(Herdado de SymmetricAlgorithm)
EncryptCbc(Byte[], Byte[], PaddingMode)

Criptografa dados usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)

Criptografa dados usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Criptografa dados no buffer especificado, usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
EncryptCfb(Byte[], Byte[], PaddingMode, Int32)

Criptografa dados usando o modo CFB com o modo de preenchimento e o tamanho dos comentários especificados.

(Herdado de SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)

Criptografa dados usando o modo CFB com o modo de preenchimento e o tamanho dos comentários especificados.

(Herdado de SymmetricAlgorithm)
EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Criptografa dados no buffer especificado, usando o modo CFB com o modo de preenchimento e o tamanho dos comentários especificados.

(Herdado de SymmetricAlgorithm)
EncryptEcb(Byte[], PaddingMode)

Criptografa dados usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, PaddingMode)

Criptografa dados usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
EncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Criptografa dados no buffer especificado, usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GenerateIV()

Quando substituído em uma classe derivada, gera um vetor de inicialização aleatório (IV) a ser usado para o algoritmo.

(Herdado de SymmetricAlgorithm)
GenerateKey()

Quando substituído em uma classe derivada, gera uma chave aleatória (Key) para ser usada com o algoritmo.

(Herdado de SymmetricAlgorithm)
GetCiphertextLengthCbc(Int32, PaddingMode)

Obtém o comprimento de um texto cifrado com um determinado modo de preenchimento e comprimento de texto sem formatação no modo CBC.

(Herdado de SymmetricAlgorithm)
GetCiphertextLengthCfb(Int32, PaddingMode, Int32)

Obtém o comprimento de um texto cifrado com um determinado modo de preenchimento e comprimento de texto sem formatação no modo CFB.

(Herdado de SymmetricAlgorithm)
GetCiphertextLengthEcb(Int32, PaddingMode)

Obtém o comprimento de um texto cifrado com um determinado modo de preenchimento e comprimento de texto sem formatação no modo ECB.

(Herdado de SymmetricAlgorithm)
GetHashCode()

Serve como a função de hash padrão.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsWeakKey(Byte[])

Determina se a chave especificada é fraca.

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
TryDecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)

Tenta descriptografar dados no buffer especificado, usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
TryDecryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Quando substituído em uma classe derivada, tenta descriptografar dados no buffer especificado, usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
TryDecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)

Tenta descriptografar dados no buffer especificado, usando o modo CFB com o modo de preenchimento e o tamanho dos comentários especificados.

(Herdado de SymmetricAlgorithm)
TryDecryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)

Quando substituído em uma classe derivada, tenta descriptografar dados no buffer especificado, usando o modo CFB com o modo de preenchimento especificado e o tamanho dos comentários.

(Herdado de SymmetricAlgorithm)
TryDecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Tenta descriptografar dados no buffer especificado, usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
TryDecryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Quando substituído em uma classe derivada, tenta descriptografar dados no buffer especificado, usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
TryEncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)

Tenta criptografar dados no buffer especificado, usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
TryEncryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Quando substituído em uma classe derivada, tenta criptografar dados no buffer especificado, usando o modo CBC com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
TryEncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)

Tenta criptografar dados no buffer especificado, usando o modo CFB com o modo de preenchimento e o tamanho dos comentários especificados.

(Herdado de SymmetricAlgorithm)
TryEncryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)

Quando substituído em uma classe derivada, tenta criptografar dados no buffer especificado, usando o modo CFB com o modo de preenchimento especificado e o tamanho dos comentários.

(Herdado de SymmetricAlgorithm)
TryEncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Tenta criptografar dados no buffer especificado, usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
TryEncryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Quando substituído em uma classe derivada, tenta criptografar dados no buffer especificado, usando o modo ECB com o modo de preenchimento especificado.

(Herdado de SymmetricAlgorithm)
ValidKeySize(Int32)

Determina se o tamanho da chave especificado é válido para o algoritmo atual.

(Herdado de SymmetricAlgorithm)

Implantações explícitas de interface

IDisposable.Dispose()

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Libera os recursos não gerenciados usados pelo SymmetricAlgorithm e opcionalmente libera os recursos gerenciados.

(Herdado de SymmetricAlgorithm)

Aplica-se a

Confira também