Questa pagina è stata utile?
I suggerimenti relativi al contenuto di questa pagina sono importanti. Comunicaceli.
Altri suggerimenti?
1500 caratteri rimanenti
Classe SymmetricAlgorithm
Collapse the table of content
Expand the table of content
Il presente articolo è stato tradotto automaticamente. Passare il puntatore sulle frasi nell'articolo per visualizzare il testo originale. Ulteriori informazioni.
Traduzione
Originale

Classe SymmetricAlgorithm

Rappresenta la classe base astratta dalla quale devono ereditare tutte le implementazioni di algoritmi simmetrici.

Spazio dei nomi:  System.Security.Cryptography
Assembly:  mscorlib (in mscorlib.dll)

[ComVisibleAttribute(true)]
public abstract class SymmetricAlgorithm : IDisposable

Il tipo SymmetricAlgorithm espone i seguenti membri.

  NomeDescrizione
Metodo protettoSymmetricAlgorithmInizializza una nuova istanza della classe SymmetricAlgorithm.
In alto

  NomeDescrizione
Proprietà pubblicaBlockSizeOttiene o imposta la dimensione in bit del blocco dell'operazione di crittografia.
Proprietà pubblicaFeedbackSizeOttiene o imposta la dimensione in bit della quantità di informazioni raccolte dell'operazione di crittografia.
Proprietà pubblicaIVOttiene o imposta il vettore di inizializzazione (IV) per l'algoritmo simmetrico.
Proprietà pubblicaKeyOttiene o imposta la chiave segreta per l'algoritmo simmetrico.
Proprietà pubblicaKeySizeOttiene o imposta la dimensione in bit della chiave segreta utilizzata dall'algoritmo simmetrico.
Proprietà pubblicaLegalBlockSizesOttiene le dimensioni in bit dei blocchi supportate dall'algoritmo simmetrico.
Proprietà pubblicaLegalKeySizesOttiene le dimensioni in bit delle chiavi supportate dall'algoritmo simmetrico.
Proprietà pubblicaModeOttiene o imposta la modalità di funzionamento dell'algoritmo simmetrico.
Proprietà pubblicaPaddingOttiene o imposta la modalità di spaziatura interna utilizzata nell'algoritmo simmetrico.
In alto

  NomeDescrizione
Metodo pubblicoClearLibera tutte le risorse utilizzate dalla classe SymmetricAlgorithm.
Metodo pubblicoMembro staticoCreate()Consente di creare l'oggetto di crittografia predefinito utilizzato per eseguire l'algoritmo simmetrico.
Metodo pubblicoMembro staticoCreate(String)Consente di creare l'oggetto di crittografia specificato utilizzato per eseguire l'algoritmo simmetrico.
Metodo pubblicoCreateDecryptor()Crea un oggetto di decrittografia simmetrica con la proprietà Key corrente e il vettore di inizializzazione IV.
Metodo pubblicoCreateDecryptor(Byte[], Byte[])Quando è sottoposto a override in una classe derivata, crea un oggetto di decrittografia simmetrica con la proprietà Key e il vettore di inizializzazione IV specificati.
Metodo pubblicoCreateEncryptor()Crea un oggetto di crittografia simmetrica con la proprietà Key corrente e il vettore di inizializzazione IV.
Metodo pubblicoCreateEncryptor(Byte[], Byte[])Quando è sottoposto a override in una classe derivata, crea un oggetto di crittografia simmetrica con la proprietà Key e il vettore di inizializzazione IV specificati.
Metodo pubblicoDispose()Rilascia tutte le risorse utilizzate dall'istanza corrente della classe SymmetricAlgorithm.
Metodo protettoDispose(Boolean)Rilascia le risorse non gestite utilizzate dall'oggetto SymmetricAlgorithm ed eventualmente rilascia le risorse gestite.
Metodo pubblicoEquals(Object) Determina se l'oggetto specificato è uguale all'oggetto corrente. (Ereditato da Object)
Metodo protettoFinalize Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulizia prima che l'oggetto stesso venga reclamato dalla procedura di Garbage Collection. (Ereditato da Object)
Metodo pubblicoGenerateIVQuando è sottoposto a override in una classe derivata, genera un vettore di inizializzazione casuale IV da utilizzare per l'algoritmo.
Metodo pubblicoGenerateKeyQuando è sottoposto a override in una classe derivata, genera una chiave casuale Key da utilizzare per l'algoritmo.
Metodo pubblicoGetHashCode Funge da funzione hash per un particolare tipo. (Ereditato da Object)
Metodo pubblicoGetType Ottiene il Type dell'istanza corrente. (Ereditato da Object)
Metodo protettoMemberwiseClone Crea una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object)
Metodo pubblicoToString Restituisce una stringa che rappresenta l'oggetto corrente. (Ereditato da Object)
Metodo pubblicoValidKeySizeDetermina se la dimensione specificata della chiave è valida per l'algoritmo corrente.
In alto

  NomeDescrizione
Campo protettoBlockSizeValueRappresenta la dimensione in bit del blocco dell'operazione di crittografia.
Campo protettoFeedbackSizeValueRappresenta la dimensione in bit della quantità di informazioni raccolte dell'operazione di crittografia.
Campo protettoIVValueRappresenta il vettore di inizializzazione (IV) per l'algoritmo simmetrico.
Campo protettoKeySizeValueRappresenta la dimensione in bit della chiave segreta utilizzata dall'algoritmo simmetrico.
Campo protettoKeyValueRappresenta la chiave segreta per l'algoritmo simmetrico.
Campo protettoLegalBlockSizesValueSpecifica le dimensioni in bit dei blocchi supportate dall'algoritmo simmetrico.
Campo protettoLegalKeySizesValueSpecifica le dimensioni in bit delle chiavi supportate dall'algoritmo simmetrico.
Campo protettoModeValueRappresenta la modalità di cifratura utilizzata nell'algoritmo simmetrico.
Campo protettoPaddingValueRappresenta la modalità di riempimento utilizzata nell'algoritmo simmetrico.
In alto

Le classi che derivano dalla classe SymmetricAlgorithm utilizzano una modello di concatenazione denominato cipher block chaining (CBC), che richiede una chiave Key e un vettore di inizializzazione IV per eseguire trasformazioni crittografiche sui dati. Per decrittografare dati precedentemente crittografati tramite una delle classi SymmetricAlgorithm, è necessario impostare la proprietà Key e la proprietà IV sugli stessi valori utilizzati per la crittografia. Per garantire l'utilità di un algoritmo simmetrico, la chiave segreta deve essere nota soltanto al mittente e al destinatario.

RijndaelManaged , DESCryptoServiceProvider ,RC2CryptoServiceProvider e TripleDESCryptoServiceProvider sono implementazioni di algoritmi simmetrici.

Quando si utilizzano classi derivate, dal punto di vista della sicurezza non è sufficiente imporre semplicemente una procedura di Garbage Collection dopo aver terminato di utilizzare l'oggetto. È necessario chiamare in modo esplicito il metodo Clear sull'oggetto per azzerare tutti i dati riservati all'interno dell'oggetto prima che venga rilasciato. Mediante la Garbage Collection non vengono azzerati i contenuti degli oggetti raccolti, ma viene semplicemente contrassegnata la memoria come disponibile per la riallocazione. I dati all'interno di un oggetto raccolto nel Garbage Collector potrebbero pertanto essere ancora presenti nell'heap di memoria nella memoria non allocata. Nel caso di oggetti di crittografia, tra questi dati potrebbero essere incluse informazioni riservate come dati relativi alle chiavi o un blocco di testo normale.

Tutte le classi di crittografia in .NET Framework che contengono dati riservati implementano un metodo Clear. Quando viene chiamato, il metodo Clear sovrascrive con zero tutti i dati riservati all'interno dell'oggetto, quindi rilascia l'oggetto affinché possa essere raccolto nel Garbage Collector in modo sicuro. Quando l'oggetto è stato azzerato e rilasciato, è necessario chiamare il metodo Dispose con il parametro disposing impostato su True per eliminare tutte le risorse gestite e non gestite associate all'oggetto.

Note per gli eredi

Quando si eredita dalla classe SymmetricAlgorithm, è necessario eseguire l'override dei seguenti membri: CreateDecryptor, CreateEncryptor, GenerateIV e GenerateKey.

Nell'esempio di codice riportato di seguito viene utilizzata la classe RijndaelManaged con la proprietà Key e il vettore di inizializzazione IV specificati per crittografare un file specificato da inName. Il risultato crittografato verrà inserito nel file specificato da outName. I parametri desKey e desIV del metodo sono matrici a 8 byte. Per eseguire questo esempio è richiesta la versione di crittografia a 128 bit.


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();                   
 }


.NET Framework

Supportato in: 4.5, 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Supportato in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (ruoli di base del server non supportati), Windows Server 2008 R2 (ruoli di base del server supportati con SP1 o versione successiva, Itanium non supportato)

.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.

Qualsiasi membro pubblico static (Shared in Visual Basic) di questo tipo è thread-safe. I membri di istanza non sono garantiti come thread-safe.

Aggiunte alla community

AGGIUNGI
Mostra:
© 2015 Microsoft