SymmetricAlgorithm SymmetricAlgorithm SymmetricAlgorithm SymmetricAlgorithm Class

Définition

Représente la classe de base abstraite dont toutes les implémentations des algorithmes symétriques doivent hériter.Represents the abstract base class from which all implementations of symmetric algorithms must inherit.

public ref class SymmetricAlgorithm abstract : IDisposable
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class SymmetricAlgorithm : IDisposable
type SymmetricAlgorithm = class
    interface IDisposable
Public MustInherit Class SymmetricAlgorithm
Implements IDisposable
Héritage
SymmetricAlgorithmSymmetricAlgorithmSymmetricAlgorithmSymmetricAlgorithm
Dérivé
Attributs
Implémente

Exemples

Le code suivant exemple utilise le RijndaelManaged classe avec la valeur Key propriété et vecteur d’initialisation (IV) pour chiffrer un fichier spécifié par inNameet renvoie le résultat chiffré dans le fichier spécifié par outName.The following code example uses the RijndaelManaged class with the specified Key property and initialization vector (IV) to encrypt a file specified by inName, and outputs the encrypted result to the file specified by outName. Le desKey et desIV paramètres à la méthode sont des tableaux de 8 octets.The desKey and desIV parameters to the method are 8-byte arrays. Vous devez disposer du pack de cryptage élevé pour exécuter cet exemple.You must have the high encryption pack installed to run this example.

void EncryptData( String^ inName, String^ outName, array<Byte>^rijnKey, array<Byte>^rijnIV )
{
   
   //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.

   SymmetricAlgorithm^ rijn = SymmetricAlgorithm::Create(); //Creates the default implementation, which is RijndaelManaged.         

   CryptoStream^ encStream = gcnew CryptoStream( fout,rijn->CreateEncryptor( rijnKey, rijnIV ),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();
   fout->Close();
   fin->Close();
}

private static void EncryptData(String inName, String outName, byte[] rijnKey, byte[] rijnIV)
 {    
     //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.
 
     SymmetricAlgorithm rijn = SymmetricAlgorithm.Create(); //Creates the default implementation, which is RijndaelManaged.         
     CryptoStream encStream = new CryptoStream(fout, rijn.CreateEncryptor(rijnKey, rijnIV), 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();  
     fout.Close();
     fin.Close();                   
 }
   Private Shared Sub EncryptData(inName As String, outName As String, _
   rijnKey() As Byte, rijnIV() 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 'Total length of the input file.
       Dim len As Integer 'This is the number of bytes to be written at a time.
       'Creates the default implementation, which is RijndaelManaged.
       Dim rijn As SymmetricAlgorithm = SymmetricAlgorithm.Create()
       Dim encStream As New CryptoStream(fout, _
          rijn.CreateEncryptor(rijnKey, rijnIV), 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 = Convert.ToInt32(rdlen + len)
           Console.WriteLine("{0} bytes processed", rdlen)
       End While
       
       encStream.Close()
fout.Close()
fin.Close()
   End Sub

Remarques

Les classes qui dérivent de la SymmetricAlgorithm classe utilisent un mode de chaînage appelé chiffrement de blocs chaînage CBC (), qui requiert une clé (Key) et un vecteur d’initialisation (IV) pour effectuer des transformations de chiffrement sur les données.The classes that derive from the SymmetricAlgorithm class use a chaining mode called cipher block chaining (CBC), which requires a key (Key) and an initialization vector (IV) to perform cryptographic transformations on data. Pour déchiffrer les données qui ont été chiffrées à l’aide d’une de la SymmetricAlgorithm classes, vous devez définir le Key propriété et le IV propriété sur les valeurs qui ont été utilisés pour le chiffrement.To decrypt data that was encrypted using one of the SymmetricAlgorithm classes, you must set the Key property and the IV property to the same values that were used for encryption. Pour un algorithme symétrique soit utile, la clé secrète doit être connue uniquement à l’expéditeur et le récepteur.For a symmetric algorithm to be useful, the secret key must be known only to the sender and the receiver.

RijndaelManaged, DESCryptoServiceProvider, RC2CryptoServiceProvider, et TripleDESCryptoServiceProvider sont des implémentations d’algorithmes symétriques.RijndaelManaged, DESCryptoServiceProvider, RC2CryptoServiceProvider, and TripleDESCryptoServiceProvider are implementations of symmetric algorithms.

Notez que lors de l’utilisation de classes dérivées, il est insuffisant dans une perspective de sécurité, pour simplement forcer un garbage collection une fois que vous avez fini d’utiliser l’objet.Note that when using derived classes, it is not enough, from a security perspective, to simply force a garbage collection after you have finished using the object. Vous devez appeler explicitement la Clear méthode sur l’objet à zéro toutes les données sensibles au sein de l’objet avant sa publication.You must explicitly call the Clear method on the object to zero out any sensitive data within the object before it is released. Notez que le garbage collection ne pas à zéro le contenu des objets récupérés mais marque simplement la mémoire comme pouvant être réallouée.Note that garbage collection does not zero out the contents of collected objects but simply marks the memory as available for reallocation. Par conséquent, les données contenues dans un objet collector garbage toujours peut-être présentes dans le segment de mémoire dans la mémoire non allouée.Thus the data contained within a garbage collected object may still be present in the memory heap in unallocated memory. Dans le cas des objets de chiffrement, ces données peut contenir des informations sensibles telles que les données de clé ou un bloc de texte brut.In the case of cryptographic objects, this data could contain sensitive information such as key data or a block of plain text.

Chiffrement de toutes les classes dans le .NET Framework qui contiennent des données sensibles implémentent un Clear (méthode).All cryptographic classes in the .NET Framework that hold sensitive data implement a Clear method. Lorsqu’elle est appelée, le Clear méthode remplace toutes les données sensibles au sein de l’objet avec les zéros et libère l’objet afin qu’il peut être en toute sécurité par le garbage collecté.When called, the Clear method overwrites all sensitive data within the object with zeros and then releases the object so that it can be safely garbage collected. Lorsque l’objet a été remis à zéro et publié, vous devez ensuite appeler la Dispose méthode avec le disposing paramètre la valeur True pour supprimer toutes les ressources managées et associés à l’objet.When the object has been zeroed and released, you should then call the Dispose method with the disposing parameter set to True to dispose of all managed and unmanaged resources associated with the object.

Notes pour les héritiers

Lorsque vous héritez de la SymmetricAlgorithm (classe), vous devez substituer les membres suivants : CreateDecryptor(Byte[], Byte[]), CreateEncryptor(Byte[], Byte[]), GenerateIV(), et GenerateKey().When you inherit from the SymmetricAlgorithm class, you must override the following members: CreateDecryptor(Byte[], Byte[]), CreateEncryptor(Byte[], Byte[]), GenerateIV(), and GenerateKey().

Constructeurs

SymmetricAlgorithm() SymmetricAlgorithm() SymmetricAlgorithm() SymmetricAlgorithm()

Initialise une nouvelle instance de la classe SymmetricAlgorithm.Initializes a new instance of the SymmetricAlgorithm class.

Champs

BlockSizeValue BlockSizeValue BlockSizeValue BlockSizeValue

Représente la taille de bloc, en bits, de l'opération de chiffrement.Represents the block size, in bits, of the cryptographic operation.

FeedbackSizeValue FeedbackSizeValue FeedbackSizeValue FeedbackSizeValue

Représente la taille des commentaires, en bits, de l'opération de chiffrement.Represents the feedback size, in bits, of the cryptographic operation.

IVValue IVValue IVValue IVValue

Représente le vecteur d'initialisation (IV) pour l'algorithme symétrique.Represents the initialization vector (IV) for the symmetric algorithm.

KeySizeValue KeySizeValue KeySizeValue KeySizeValue

Représente la taille, en bits, de la clé secrète utilisée par l'algorithme symétrique.Represents the size, in bits, of the secret key used by the symmetric algorithm.

KeyValue KeyValue KeyValue KeyValue

Représente la clé secrète pour l'algorithme symétrique.Represents the secret key for the symmetric algorithm.

LegalBlockSizesValue LegalBlockSizesValue LegalBlockSizesValue LegalBlockSizesValue

Spécifie les tailles de bloc, en octets, prises en charge par l'algorithme symétrique.Specifies the block sizes, in bits, that are supported by the symmetric algorithm.

LegalKeySizesValue LegalKeySizesValue LegalKeySizesValue LegalKeySizesValue

Spécifie les tailles de clé, en octets, prises en charge par l'algorithme symétrique.Specifies the key sizes, in bits, that are supported by the symmetric algorithm.

ModeValue ModeValue ModeValue ModeValue

Représente le mode de chiffrement utilisé dans l'algorithme symétrique.Represents the cipher mode used in the symmetric algorithm.

PaddingValue PaddingValue PaddingValue PaddingValue

Représente le mode de remplissage utilisé dans l'algorithme symétrique.Represents the padding mode used in the symmetric algorithm.

Propriétés

BlockSize BlockSize BlockSize BlockSize

Obtient ou définit la taille de bloc, en bits, de l'opération de chiffrement.Gets or sets the block size, in bits, of the cryptographic operation.

FeedbackSize FeedbackSize FeedbackSize FeedbackSize

Obtient ou définit la taille des commentaires, en bits, de l'opération de chiffrement.Gets or sets the feedback size, in bits, of the cryptographic operation.

IV IV IV IV

Obtient ou définit le vecteur d'initialisation (IV) pour l'algorithme symétrique.Gets or sets the initialization vector (IV) for the symmetric algorithm.

Key Key Key Key

Obtient ou définit la clé secrète pour l'algorithme symétrique.Gets or sets the secret key for the symmetric algorithm.

KeySize KeySize KeySize KeySize

Obtient ou définit la taille, en bits, de la clé secrète utilisée par l'algorithme symétrique.Gets or sets the size, in bits, of the secret key used by the symmetric algorithm.

LegalBlockSizes LegalBlockSizes LegalBlockSizes LegalBlockSizes

Obtient les tailles de bloc, en octets, prises en charge par l'algorithme symétrique.Gets the block sizes, in bits, that are supported by the symmetric algorithm.

LegalKeySizes LegalKeySizes LegalKeySizes LegalKeySizes

Obtient les tailles de clé, en octets, prises en charge par l'algorithme symétrique.Gets the key sizes, in bits, that are supported by the symmetric algorithm.

Mode Mode Mode Mode

Obtient ou définit le mode de fonctionnement pour l'algorithme symétrique.Gets or sets the mode for operation of the symmetric algorithm.

Padding Padding Padding Padding

Obtient ou définit le mode de remplissage utilisé dans l'algorithme symétrique.Gets or sets the padding mode used in the symmetric algorithm.

Méthodes

Clear() Clear() Clear() Clear()

Libère toutes les ressources utilisées par la classe SymmetricAlgorithm.Releases all resources used by the SymmetricAlgorithm class.

Create() Create() Create() Create()

Crée un objet de chiffrement par défaut utilisé pour exécuter l'algorithme symétrique.Creates a default cryptographic object used to perform the symmetric algorithm.

Create(String) Create(String) Create(String) Create(String)

Crée l'objet de chiffrement spécifié utilisé pour exécuter l'algorithme symétrique.Creates the specified cryptographic object used to perform the symmetric algorithm.

CreateDecryptor() CreateDecryptor() CreateDecryptor() CreateDecryptor()

Crée un objet déchiffreur symétrique avec la propriété Key en cours et le vecteur d'initialisation (IV).Creates a symmetric decryptor object with the current Key property and initialization vector (IV).

CreateDecryptor(Byte[], Byte[]) CreateDecryptor(Byte[], Byte[]) CreateDecryptor(Byte[], Byte[]) CreateDecryptor(Byte[], Byte[])

En cas de substitution dans une classe dérivée, crée un objet déchiffreur symétrique avec la propriété Key spécifiée et le vecteur d'initialisation (IV).When overridden in a derived class, creates a symmetric decryptor object with the specified Key property and initialization vector (IV).

CreateEncryptor() CreateEncryptor() CreateEncryptor() CreateEncryptor()

Crée un objet chiffreur symétrique avec la propriété Key en cours et le vecteur d'initialisation (IV).Creates a symmetric encryptor object with the current Key property and initialization vector (IV).

CreateEncryptor(Byte[], Byte[]) CreateEncryptor(Byte[], Byte[]) CreateEncryptor(Byte[], Byte[]) CreateEncryptor(Byte[], Byte[])

En cas de substitution dans une classe dérivée, crée un objet chiffreur symétrique avec la propriété Key spécifiée et le vecteur d'initialisation (IV).When overridden in a derived class, creates a symmetric encryptor object with the specified Key property and initialization vector (IV).

Dispose() Dispose() Dispose() Dispose()

Libère toutes les ressources utilisées par l'instance actuelle de la classe SymmetricAlgorithm.Releases all resources used by the current instance of the SymmetricAlgorithm class.

Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

Libère les ressources non managées utilisées par SymmetricAlgorithm et libère éventuellement les ressources managées.Releases the unmanaged resources used by the SymmetricAlgorithm and optionally releases the managed resources.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Détermine si l'objet spécifié est identique à l'objet actuel.Determines whether the specified object is equal to the current object.

(Inherited from Object)
Finalize() Finalize() Finalize() Finalize()

Ce membre substitue Finalize(). Une documentation plus complète est peut-être disponible dans cette rubrique.This member overrides Finalize(), and more complete documentation might be available in that topic.

Autorise Object à tenter de libérer des ressources et d'exécuter d'autres opérations de nettoyage avant que Object soit récupéré par l'opération garbage collection.Allows an Object to attempt to free resources and perform other cleanup operations before the Object is reclaimed by garbage collection.

GenerateIV() GenerateIV() GenerateIV() 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.When overridden in a derived class, generates a random initialization vector (IV) to use for the algorithm.

GenerateKey() GenerateKey() GenerateKey() GenerateKey()

En cas de substitution dans une classe dérivée, génère une clé aléatoire (Key) à utiliser pour l'algorithme.When overridden in a derived class, generates a random key (Key) to use for the algorithm.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Fait office de fonction de hachage par défaut.Serves as the default hash function.

(Inherited from Object)
GetType() GetType() GetType() GetType()

Obtient le Type de l'instance actuelle.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Crée une copie superficielle de l'objet Object actuel.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Retourne une chaîne qui représente l'objet actuel.Returns a string that represents the current object.

(Inherited from Object)
ValidKeySize(Int32) ValidKeySize(Int32) ValidKeySize(Int32) ValidKeySize(Int32)

Détermine si la taille de clé spécifiée est valide pour l'algorithme en cours.Determines whether the specified key size is valid for the current algorithm.

Implémentations d’interfaces explicites

IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose() IDisposable.Dispose()

Libère les ressources non managées utilisées par SymmetricAlgorithm et libère éventuellement les ressources managées.Releases the unmanaged resources used by the SymmetricAlgorithm and optionally releases the managed resources.

S’applique à

Voir aussi