Partager via


SymmetricAlgorithm Classe

Définition

Représente la classe de base abstraite à partir de laquelle toutes les implémentations d’algorithmes symétriques doivent hériter.

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

Exemples

L’exemple de code suivant utilise la Aes classe avec la propriété et le vecteur d’initialisation spécifiés Key (IV) pour chiffrer un fichier spécifié par inName, et génère le résultat chiffré dans le fichier spécifié par outName. Les desKey paramètres et desIV les paramètres de la méthode sont des tableaux de 8 octets. Vous devez installer le pack de chiffrement élevé pour exécuter cet exemple.

private static void EncryptData(string inName, string outName, byte[] aesKey, byte[] aesIV)
 {
     //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.

     Aes aes = Aes.Create();
     CryptoStream encStream = new CryptoStream(fout, aes.CreateEncryptor(aesKey, aesIV), 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 chaînage de blocs de chiffrement (CBC), qui nécessite une clé (Key) et un vecteur d’initialisation (IV) pour effectuer des transformations de chiffrement sur les données. Pour déchiffrer les données chiffrées à l’aide de l’une SymmetricAlgorithm des classes, vous devez définir la Key propriété et la IV propriété sur les mêmes valeurs que celles utilisées pour le chiffrement. Pour qu’un algorithme symétrique soit utile, la clé secrète doit être connue uniquement de l’expéditeur et du destinataire.

Aes, , DESRC2et TripleDES sont des implémentations d’algorithmes symétriques.

Notez que lorsque vous utilisez des classes dérivées, il n’est pas suffisant, du point de vue de la sécurité, de forcer simplement un garbage collection une fois que vous avez fini d’utiliser l’objet. Vous devez appeler explicitement la Clear méthode sur l’objet pour qu’elle n’affiche aucune donnée sensible au sein de l’objet avant sa publication. Notez que le garbage collection n’exclut pas le contenu des objets collectés, mais marque simplement la mémoire comme disponible pour la réaffectation. Ainsi, les données contenues dans un objet collecté par le garbage peuvent toujours être présentes dans le tas de mémoire dans la mémoire non allouée. 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.

Toutes les classes de chiffrement du .NET Framework qui contiennent des données sensibles implémentent une Clear méthode. Lorsqu’elle est appelée, la Clear méthode remplace toutes les données sensibles au sein de l’objet avec zéros, puis libère l’objet afin qu’il puisse être collecté en toute sécurité. Lorsque l’objet a été zéro et libéré, vous devez ensuite appeler la Dispose méthode avec le disposing paramètre défini pour True supprimer toutes les ressources managées et non managées associées à l’objet.

Notes pour les responsables de l’implémentation

Lorsque vous héritez de la SymmetricAlgorithm classe, vous devez remplacer les membres suivants : CreateDecryptor(Byte[], Byte[]), , CreateEncryptor(Byte[], Byte[])GenerateIV(), et GenerateKey().

Constructeurs

Nom Description
SymmetricAlgorithm()

Initialise une nouvelle instance de la classe SymmetricAlgorithm.

Champs

Nom Description
BlockSizeValue

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

FeedbackSizeValue

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

IVValue

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

KeySizeValue

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

KeyValue

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

LegalBlockSizesValue

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

LegalKeySizesValue

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

ModeValue

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

PaddingValue

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

Propriétés

Nom Description
BlockSize

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

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).

IV

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

Key

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

KeySize

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

LegalBlockSizes

Obtient les tailles de bloc, 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.

Mode

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

Padding

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

Méthodes

Nom Description
Clear()

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

Create()
Obsolète.
Obsolète.

Crée un objet de chiffrement par défaut utilisé pour effectuer l’algorithme symétrique.

Create(String)
Obsolète.

Crée l’objet de chiffrement spécifié utilisé pour effectuer l’algorithme symétrique.

CreateDecryptor()

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

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).

CreateEncryptor()

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

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).

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

Déchiffre les données à l’aide du mode CBC avec le mode de remplissage spécifié.

DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)

Déchiffre les données à l’aide du mode CBC avec le mode de remplissage spécifié.

DecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Déchiffre les données dans la mémoire tampon spécifiée, en utilisant le mode CBC avec le mode de remplissage spécifié.

DecryptCfb(Byte[], Byte[], PaddingMode, Int32)

Déchiffre les données à l’aide du mode CFB avec le mode de remplissage et la taille de commentaires spécifiés.

DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)

Déchiffre les données à l’aide du mode CFB avec le mode de remplissage et la taille de commentaires spécifiés.

DecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Déchiffre les données dans la mémoire tampon spécifiée, à l’aide du mode CFB avec le mode de remplissage et la taille de commentaires spécifiés.

DecryptEcb(Byte[], PaddingMode)

Déchiffre les données à l’aide du mode BCE avec le mode de remplissage spécifié.

DecryptEcb(ReadOnlySpan<Byte>, PaddingMode)

Déchiffre les données à l’aide du mode BCE avec le mode de remplissage spécifié.

DecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Déchiffre les données dans la mémoire tampon spécifiée, à l’aide du mode BCE avec le mode de remplissage spécifié.

Dispose()

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

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.

EncryptCbc(Byte[], Byte[], PaddingMode)

Chiffre les données à l’aide du mode CBC avec le mode de remplissage spécifié.

EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode)

Chiffre les données à l’aide du mode CBC avec le mode de remplissage spécifié.

EncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Chiffre les données dans la mémoire tampon spécifiée, en utilisant le mode CBC avec le mode de remplissage spécifié.

EncryptCfb(Byte[], Byte[], PaddingMode, Int32)

Chiffre les données à l’aide du mode CFB avec le mode de remplissage et la taille de commentaires spécifiés.

EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, PaddingMode, Int32)

Chiffre les données à l’aide du mode CFB avec le mode de remplissage et la taille de commentaires spécifiés.

EncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Chiffre les données dans la mémoire tampon spécifiée, à l’aide du mode CFB avec le mode de remplissage et la taille de commentaires spécifiés.

EncryptEcb(Byte[], PaddingMode)

Chiffre les données à l’aide du mode BCE avec le mode de remplissage spécifié.

EncryptEcb(ReadOnlySpan<Byte>, PaddingMode)

Chiffre les données à l’aide du mode BCE avec le mode de remplissage spécifié.

EncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode)

Chiffre les données dans la mémoire tampon spécifiée, en utilisant le mode BCE avec le mode de remplissage spécifié.

Equals(Object)

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

(Hérité de Object)
Finalize()

Ce membre remplace Finalize()et une documentation plus complète peut être disponible dans cette rubrique.

Permet d’essayer Object de libérer des ressources et d’effectuer d’autres opérations de nettoyage avant la Object récupération par le garbage collection.

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.

GenerateKey()

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

GetCiphertextLengthCbc(Int32, PaddingMode)

Obtient la longueur d’un texte chiffré avec un mode de remplissage donné et une longueur en texte brut en mode CBC.

GetCiphertextLengthCfb(Int32, PaddingMode, Int32)

Obtient la longueur d’un texte chiffré avec un mode de remplissage donné et une longueur en texte brut en mode CFB.

GetCiphertextLengthEcb(Int32, PaddingMode)

Obtient la longueur d’un texte chiffré avec un mode de remplissage donné et une longueur en texte brut en mode BCE.

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)
MemberwiseClone()

Crée une copie superficielle du Objectactuel.

(Hérité de Object)
SetKey(ReadOnlySpan<Byte>)

Définit la clé de cette instance.

SetKeyCore(ReadOnlySpan<Byte>)

Définit la clé de cette instance.

ToString()

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

(Hérité de Object)
TryDecryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)

Tente de déchiffrer les données dans la mémoire tampon spécifiée, en utilisant le mode CBC avec le mode de remplissage spécifié.

TryDecryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

En cas de substitution dans une classe dérivée, tente de déchiffrer les données dans la mémoire tampon spécifiée, en utilisant le mode CBC avec le mode de remplissage spécifié.

TryDecryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)

Tente de déchiffrer les données dans la mémoire tampon spécifiée, à l’aide du mode CFB avec le mode de remplissage et la taille de commentaires spécifiés.

TryDecryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)

En cas de substitution dans une classe dérivée, tente de déchiffrer les données dans la mémoire tampon spécifiée, à l’aide du mode CFB avec le mode de remplissage et la taille de commentaires spécifiés.

TryDecryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Tente de déchiffrer les données dans la mémoire tampon spécifiée, en utilisant le mode BCE avec le mode de remplissage spécifié.

TryDecryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

En cas de substitution dans une classe dérivée, tente de déchiffrer les données dans la mémoire tampon spécifiée, en utilisant le mode BCE avec le mode de remplissage spécifié.

TryEncryptCbc(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode)

Tente de chiffrer des données dans la mémoire tampon spécifiée, en utilisant le mode CBC avec le mode de remplissage spécifié.

TryEncryptCbcCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

En cas de substitution dans une classe dérivée, tente de chiffrer les données dans la mémoire tampon spécifiée, en utilisant le mode CBC avec le mode de remplissage spécifié.

TryEncryptCfb(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, Int32, PaddingMode, Int32)

Tente de chiffrer les données dans la mémoire tampon spécifiée, à l’aide du mode CFB avec le mode de remplissage et la taille de commentaires spécifiés.

TryEncryptCfbCore(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32, Int32)

En cas de substitution dans une classe dérivée, tente de chiffrer les données dans la mémoire tampon spécifiée, en utilisant le mode de remplissage et la taille de commentaires spécifiés.

TryEncryptEcb(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

Tente de chiffrer des données dans la mémoire tampon spécifiée, en utilisant le mode BCE avec le mode de remplissage spécifié.

TryEncryptEcbCore(ReadOnlySpan<Byte>, Span<Byte>, PaddingMode, Int32)

En cas de substitution dans une classe dérivée, tente de chiffrer les données dans la mémoire tampon spécifiée, en utilisant le mode BCE avec le mode de remplissage spécifié.

ValidKeySize(Int32)

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

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.

S’applique à

Voir aussi