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

L’exemple de code suivant utilise RijndaelManaged la classe avec la Key propriété et le vecteur d’initialisationIV() spécifiés pour chiffrer inNameun fichier spécifié par et génère 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. Les desKey paramètres desIV et de la méthode sont des tableaux de 8 octets.The desKey and desIV parameters to the method are 8-byte arrays. Le Pack de chiffrement élevé doit être installé 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 SymmetricAlgorithm de la classe utilisent un mode de chaînage appelé chaînage de blocs de chiffrement (CBC), quiKeyrequiert une clé () et unIVvecteur d’initialisation () 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 des données qui ont été chiffrées SymmetricAlgorithm à l’aide de l’une Key des classes, IV vous devez définir la propriété et la propriété sur les mêmes valeurs que celles utilisées 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 qu’un algorithme symétrique soit utile, la clé secrète doit être connue uniquement de l’expéditeur et du destinataire.For a symmetric algorithm to be useful, the secret key must be known only to the sender and the receiver.

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

Notez que lorsque vous utilisez des classes dérivées, il ne suffit pas, du point de vue de la sécurité, de forcer simplement une 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 pour zéro des données sensibles dans l’objet avant qu’il ne soit libéré.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 garbage collection n’effectue pas la mise à zéro du contenu des objets collectés, mais marque simplement la mémoire comme disponible pour la réallocation.Note that garbage collection does not zero out the contents of collected objects but simply marks the memory as available for reallocation. Ainsi, les données contenues dans un objet récupéré par le garbage collector peuvent toujours être présentes dans le segment de mémoire de 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 d’objets de chiffrement, ces données peuvent contenir des informations sensibles telles que des 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.

Toutes les classes de chiffrement dans le .NET Framework qui contiennent des Clear données sensibles implémentent une méthode.All cryptographic classes in the .NET Framework that hold sensitive data implement a Clear method. Quand elle est appelée Clear , la méthode remplace toutes les données sensibles dans l’objet par des zéros, puis libère l’objet afin qu’il puisse être récupéré en toute sécurité.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é mis à zéro et libéré, vous devez ensuite appeler Dispose la méthode avec disposing le paramètre défini True sur pour supprimer toutes les ressources managées et non managées associées à 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 SymmetricAlgorithm la 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