TripleDES Classe

Définition

Représente la classe de base pour les algorithmes Triple Data Encryption Standard à partir desquels toutes les TripleDES implémentations doivent dériver.

public ref class TripleDES abstract : 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
type TripleDES = class
    inherit SymmetricAlgorithm
[<System.Runtime.InteropServices.ComVisible(true)>]
type TripleDES = class
    inherit SymmetricAlgorithm
Public MustInherit Class TripleDES
Inherits SymmetricAlgorithm
Héritage
Dérivé
Attributs

Exemples

L’exemple de code suivant montre comment créer et utiliser un TripleDES objet pour chiffrer et déchiffrer des données dans un fichier.

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

class TripleDESSample
{
    static void Main()
    {
        try
        {
            byte[] key;
            byte[] iv;

            // Create a new TripleDES object to generate a random key
            // and initialization vector (IV).
            using (TripleDES tripleDes = TripleDES.Create())
            {
                key = tripleDes.Key;
                iv = tripleDes.IV;
            }

            // Create a string to encrypt.
            string original = "Here is some data to encrypt.";
            // The name/path of the file to write.
            string filename = "CText.enc";

            // Encrypt the string to a file.
            EncryptTextToFile(original, filename, key, iv);

            // Decrypt the file back to a string.
            string decrypted = DecryptTextFromFile(filename, key, iv);

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

    public static void EncryptTextToFile(string text, string path, byte[] key, byte[] iv)
    {
        try
        {
            // Create or open the specified file.
            using (FileStream fStream = File.Open(path, FileMode.Create))
            // Create a new TripleDES object.
            using (TripleDES tripleDes = TripleDES.Create())
            // Create a TripleDES encryptor from the key and IV
            using (ICryptoTransform encryptor = tripleDes.CreateEncryptor(key, iv))
            // Create a CryptoStream using the FileStream and encryptor
            using (var cStream = new CryptoStream(fStream, encryptor, CryptoStreamMode.Write))
            {
                // Convert the provided string to a byte array.
                byte[] toEncrypt = Encoding.UTF8.GetBytes(text);

                // Write the byte array to the crypto stream.
                cStream.Write(toEncrypt, 0, toEncrypt.Length);
            }
        }
        catch (CryptographicException e)
        {
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
            throw;
        }
    }

    public static string DecryptTextFromFile(string path, byte[] key, byte[] iv)
    {
        try
        {
            // Open the specified file
            using (FileStream fStream = File.OpenRead(path))
            // Create a new TripleDES object.
            using (TripleDES tripleDes = TripleDES.Create())
            // Create a TripleDES decryptor from the key and IV
            using (ICryptoTransform decryptor = tripleDes.CreateDecryptor(key, iv))
            // Create a CryptoStream using the FileStream and decryptor
            using (var cStream = new CryptoStream(fStream, decryptor, CryptoStreamMode.Read))
            // Create a StreamReader to turn the bytes back into text
            using (StreamReader reader = new StreamReader(cStream, Encoding.UTF8))
            {
                // Read back all of the text from the StreamReader, which receives
                // the decrypted bytes from the CryptoStream, which receives the
                // encrypted bytes from the FileStream.
                return reader.ReadToEnd();
            }
        }
        catch (CryptographicException e)
        {
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
            throw;
        }
    }
}
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text

Module TripleDESSample

    Sub Main()
        Try
            Dim key As Byte()
            Dim iv As Byte()

            ' Create a new TripleDES object to generate a key
            ' and initialization vector (IV).
            Using tripleDes As TripleDES = TripleDES.Create
                key = tripleDes.Key
                iv = tripleDes.IV
            End Using

            ' Create a string to encrypt.
            Dim original As String = "Here is some data to encrypt."
            ' The name/path of the file to write.
            Dim filename As String = "CText.enc"

            ' Encrypt the string to a file.
            EncryptTextToFile(original, filename, key, iv)

            ' Decrypt the file back to a string.
            Dim decrypted As String = DecryptTextFromFile(filename, key, iv)

            ' Display the decrypted string to the console.
            Console.WriteLine(decrypted)
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub


    Sub EncryptTextToFile(text As String, path As String, key As Byte(), iv As Byte())
        Try
            ' Create or open the specified file.
            ' Create a new TripleDES object,
            ' Create a TripleDES encryptor from the key and IV,
            ' Create a CryptoStream using the MemoryStream And encryptor
            Using fStream As FileStream = File.Open(path, FileMode.Create),
                tripleDes As TripleDES = TripleDES.Create,
                encryptor As ICryptoTransform = tripleDes.CreateEncryptor(key, iv),
                cStream = New CryptoStream(fStream, encryptor, CryptoStreamMode.Write)

                ' Convert the passed string to a byte array.
                Dim toEncrypt As Byte() = Encoding.UTF8.GetBytes(text)

                ' Write the byte array to the crypto stream.
                cStream.Write(toEncrypt, 0, toEncrypt.Length)
            End Using

        Catch e As CryptographicException
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
            Throw
        End Try
    End Sub


    Function DecryptTextFromFile(path As String, key As Byte(), iv As Byte()) As String
        Try
            ' Open the specified file
            ' Create a new TripleDES object.
            ' Create a TripleDES decryptor from the key and IV
            ' Create a CryptoStream using the MemoryStream and decryptor
            ' Create a StreamReader to turn the bytes back into text
            Using mStream As FileStream = File.OpenRead(path),
                tripleDes As TripleDES = TripleDES.Create,
                decryptor As ICryptoTransform = tripleDes.CreateDecryptor(key, iv),
                cStream = New CryptoStream(mStream, decryptor, CryptoStreamMode.Read),
                reader = New StreamReader(cStream, Encoding.UTF8)

                ' Read back all of the text from the StreamReader, which receives
                ' the decrypted bytes from the CryptoStream, which receives the
                ' encrypted bytes from the FileStream.
                Return reader.ReadToEnd()
            End Using
        Catch e As CryptographicException
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
            Return Nothing
        End Try
    End Function
End Module

L’exemple de code suivant montre comment créer et utiliser un TripleDES objet pour chiffrer et déchiffrer des données en mémoire.

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

class TripleDESSample2
{
    static void Main()
    {
        try
        {
            byte[] key;
            byte[] iv;

            // Create a new TripleDES object to generate a random key
            // and initialization vector (IV).
            using (TripleDES tripleDes = TripleDES.Create())
            {
                key = tripleDes.Key;
                iv = tripleDes.IV;
            }

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

            // Encrypt the string to an in-memory buffer.
            byte[] encrypted = EncryptTextToMemory(original, key, iv);

            // Decrypt the buffer back to a string.
            string decrypted = DecryptTextFromMemory(encrypted, key, iv);

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

    public static byte[] EncryptTextToMemory(string text, byte[] key, byte[] iv)
    {
        try
        {
            // Create a MemoryStream.
            using (MemoryStream mStream = new MemoryStream())
            {
                // Create a new TripleDES object.
                using (TripleDES tripleDes = TripleDES.Create())
                // Create a TripleDES encryptor from the key and IV
                using (ICryptoTransform encryptor = tripleDes.CreateEncryptor(key, iv))
                // Create a CryptoStream using the MemoryStream and encryptor
                using (var cStream = new CryptoStream(mStream, encryptor, CryptoStreamMode.Write))
                {
                    // Convert the provided string to a byte array.
                    byte[] toEncrypt = Encoding.UTF8.GetBytes(text);

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

                    // Ending the using statement for the CryptoStream completes the encryption.
                }

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

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

    public static string DecryptTextFromMemory(byte[] encrypted, byte[] key, byte[] iv)
    {
        try
        {
            // Create a buffer to hold the decrypted data.
            // TripleDES-encrypted data will always be slightly bigger than the decrypted data.
            byte[] decrypted = new byte[encrypted.Length];
            int offset = 0;

            // Create a new MemoryStream using the provided array of encrypted data.
            using (MemoryStream mStream = new MemoryStream(encrypted))
            {
                // Create a new TripleDES object.
                using (TripleDES tripleDes = TripleDES.Create())
                // Create a TripleDES decryptor from the key and IV
                using (ICryptoTransform decryptor = tripleDes.CreateDecryptor(key, iv))
                // Create a CryptoStream using the MemoryStream and decryptor
                using (var cStream = new CryptoStream(mStream, decryptor, CryptoStreamMode.Read))
                {
                    // Keep reading from the CryptoStream until it finishes (returns 0).
                    int read = 1;

                    while (read > 0)
                    {
                        read = cStream.Read(decrypted, offset, decrypted.Length - offset);
                        offset += read;
                    }
                }
            }

            // Convert the buffer into a string and return it.
            return Encoding.UTF8.GetString(decrypted, 0, offset);
        }
        catch (CryptographicException e)
        {
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message);
            throw;
        }
    }
}
Imports System.Security.Cryptography
Imports System.Text
Imports System.IO

Module MemorySample

    Sub Main()
        Try
            Dim key As Byte()
            Dim iv As Byte()

            ' Create a new TripleDES object to generate a key
            ' and initialization vector (IV).
            Using tripleDes As TripleDES = TripleDES.Create
                key = tripleDes.Key
                iv = tripleDes.IV
            End Using

            ' Create a string to encrypt.
            Dim original As String = "Here is some data to encrypt."

            ' Encrypt the string to an in-memory buffer.
            Dim encrypted As Byte() = EncryptTextToMemory(original, key, iv)

            ' Decrypt the buffer back to a string.
            Dim decrypted As String = DecryptTextFromMemory(encrypted, key, iv)

            ' Display the decrypted string to the console.
            Console.WriteLine(decrypted)
        Catch e As Exception
            Console.WriteLine(e.Message)
        End Try
    End Sub


    Function EncryptTextToMemory(text As String, key As Byte(), iv As Byte()) As Byte()
        Try
            ' Create a MemoryStream.
            Using mStream As New MemoryStream
                ' Create a new TripleDES object,
                ' Create a TripleDES encryptor from the key and IV,
                ' Create a CryptoStream using the MemoryStream And encryptor
                Using tripleDes As TripleDES = TripleDES.Create,
                    encryptor As ICryptoTransform = tripleDes.CreateEncryptor(key, iv),
                    cStream = New CryptoStream(mStream, encryptor, CryptoStreamMode.Write)

                    ' Convert the passed string to a byte array.
                    Dim toEncrypt As Byte() = Encoding.UTF8.GetBytes(text)

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

                    ' Ending the using block for the CryptoStream completes the encryption.
                End Using

                ' Get an array of bytes from the MemoryStream that holds the encrypted data.
                Dim ret As Byte() = mStream.ToArray()

                ' Return the encrypted buffer.
                Return ret
            End Using
        Catch e As CryptographicException
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
            Throw
        End Try
    End Function


    Function DecryptTextFromMemory(encrypted As Byte(), key As Byte(), iv As Byte()) As String
        Try
            ' Create a buffer to hold the decrypted data.
            ' TripleDES-encrypted data will always be slightly bigger than the decrypted data.
            Dim decrypted(encrypted.Length - 1) As Byte
            Dim offset As Integer = 0

            ' Create a new MemoryStream using the provided array of encrypted data.
            ' Create a new TripleDES object.
            ' Create a TripleDES decryptor from the key and IV
            ' Create a CryptoStream using the MemoryStream and decryptor
            Using mStream As New MemoryStream(encrypted),
                tripleDes As TripleDES = TripleDES.Create,
                decryptor As ICryptoTransform = tripleDes.CreateDecryptor(key, iv),
                cStream = New CryptoStream(mStream, decryptor, CryptoStreamMode.Read)

                ' Keep reading from the CryptoStream until it finishes (returns 0).
                Dim read As Integer = 1

                While (read > 0)
                    read = cStream.Read(decrypted, offset, decrypted.Length - offset)
                    offset += read
                End While
            End Using

            ' Convert the buffer into a string and return it.
            Return New ASCIIEncoding().GetString(decrypted, 0, offset)
        Catch e As CryptographicException
            Console.WriteLine("A Cryptographic error occurred: {0}", e.Message)
            Return Nothing
        End Try
    End Function
End Module

Remarques

TripleDES utilise trois itérations successives de l’algorithme DES . Il peut utiliser deux ou trois clés 56 bits.

Note

Un algorithme de chiffrement symétrique plus récent, Advanced Encryption Standard (AES), est disponible. Envisagez d’utiliser la Aes classe et ses classes dérivées au lieu de la TripleDES classe. Utilisez TripleDES uniquement pour la compatibilité avec les applications et données héritées.

Cet algorithme prend en charge les longueurs de clé de 128 bits à 192 bits par incréments de 64 bits.

Constructeurs

Nom Description
TripleDES()

Initialise une nouvelle instance de la classe TripleDES.

Champs

Nom Description
BlockSizeValue

Représente la taille de bloc, en bits, de l’opération de chiffrement.

(Hérité de SymmetricAlgorithm)
FeedbackSizeValue

Représente la taille de commentaires, en bits, de l’opération de chiffrement.

(Hérité de SymmetricAlgorithm)
IVValue

Représente le vecteur d’initialisation (IV) pour l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
KeySizeValue

Représente la taille, en bits, de la clé secrète utilisée par l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
KeyValue

Représente la clé secrète de l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
LegalBlockSizesValue

Spécifie les tailles de bloc, en bits, prises en charge par l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
LegalKeySizesValue

Spécifie les tailles de clé, en bits, prises en charge par l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
ModeValue

Représente le mode de chiffrement utilisé dans l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
PaddingValue

Représente le mode de remplissage utilisé dans l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)

Propriétés

Nom Description
BlockSize

Obtient ou définit la taille de bloc, en bits, de l’opération de chiffrement.

(Hérité de SymmetricAlgorithm)
FeedbackSize

Obtient ou définit la taille des commentaires, en bits, de l’opération de chiffrement pour les modes de chiffrement de commentaires de chiffrement (CFB) et de retour de sortie (OFB).

(Hérité de SymmetricAlgorithm)
IV

Obtient ou définit le vecteur d’initialisation (IV) pour l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
Key

Obtient ou définit la clé secrète de l’algorithme TripleDES .

KeySize

Obtient ou définit la taille, en bits, de la clé secrète utilisée par l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
LegalBlockSizes

Obtient les tailles de bloc, en bits, prises en charge par l’algorithme symétrique.

LegalBlockSizes

Obtient les tailles de bloc, en bits, prises en charge par l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
LegalKeySizes

Obtient les tailles de clé, en bits, prises en charge par l’algorithme symétrique.

LegalKeySizes

Obtient les tailles de clé, en bits, prises en charge par l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
Mode

Obtient ou définit le mode pour l’opération de l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)
Padding

Obtient ou définit le mode de remplissage utilisé dans l’algorithme symétrique.

(Hérité de SymmetricAlgorithm)

Méthodes

Nom Description
Clear()

Libère toutes les ressources utilisées par la SymmetricAlgorithm classe.

(Hérité de SymmetricAlgorithm)
Create()

Crée une instance d’un objet de chiffrement pour effectuer l’algorithme TripleDES .

Create(String)

Crée une instance d’un objet de chiffrement pour effectuer l’implémentation spécifiée de l’algorithme TripleDES .

CreateDecryptor()

Crée un objet de déchiffreur symétrique avec la propriété actuelle Key et le vecteur d’initialisation (IV).

(Hérité de SymmetricAlgorithm)
CreateDecryptor(Byte[], Byte[])

En cas de substitution dans une classe dérivée, crée un objet de déchiffreur symétrique avec la propriété spécifiée Key et le vecteur d’initialisation (IV).

(Hérité de SymmetricAlgorithm)
CreateEncryptor()

Crée un objet encrypteur symétrique avec la propriété actuelle Key et le vecteur d’initialisation (IV).

(Hérité de SymmetricAlgorithm)
CreateEncryptor(Byte[], Byte[])

En cas de substitution dans une classe dérivée, crée un objet encrypteur symétrique avec la propriété spécifiée Key et le vecteur d’initialisation (IV).

(Hérité de SymmetricAlgorithm)
Dispose()

Libère toutes les ressources utilisées par l’instance actuelle de la SymmetricAlgorithm classe.

(Hérité de SymmetricAlgorithm)
Dispose(Boolean)

Libère les ressources non managées utilisées par les SymmetricAlgorithm ressources gérées et libère éventuellement les ressources managées.

(Hérité de SymmetricAlgorithm)
Equals(Object)

Détermine si l’objet spécifié est égal à l’objet actuel.

(Hérité de Object)
GenerateIV()

En cas de substitution dans une classe dérivée, génère un vecteur d’initialisation aléatoire (IV) à utiliser pour l’algorithme.

(Hérité de SymmetricAlgorithm)
GenerateKey()

En cas de substitution dans une classe dérivée, génère une clé aléatoire (Key) à utiliser pour l’algorithme.

(Hérité de SymmetricAlgorithm)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

(Hérité de Object)
IsWeakKey(Byte[])

Détermine si la clé spécifiée est faible.

MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
ToString()

Retourne une chaîne qui représente l’objet actuel.

(Hérité de Object)
ValidKeySize(Int32)

Détermine si la taille de clé spécifiée est valide pour l’algorithme actuel.

(Hérité de SymmetricAlgorithm)

Implémentations d’interfaces explicites

Nom Description
IDisposable.Dispose()

Cette API prend en charge l'infrastructure du produit et n'est pas destinée à être utilisée directement à partir de votre code.

Libère les ressources non managées utilisées par les SymmetricAlgorithm ressources gérées et libère éventuellement les ressources managées.

(Hérité de SymmetricAlgorithm)

S’applique à

Voir aussi