Esempio di algoritmi simmetrici

Aggiornamento: novembre 2007

In questo esempio vengono utilizzate le classi Rijndael e TripleDESCryptoServiceProvider per implementare una crittografia simmetrica (a chiave privata), come descritto nell'argomento Cenni preliminari sulla crittografia.

Per ottenere esempi e istruzioni per la relativa installazione

  • Effettuare una delle seguenti operazioni:

    • Dal menu Guida, scegliere Esempi.

      Il file Readme contiene informazioni sugli esempi.

    • Visitare il sito Web Visual Studio 2008 Samples (informazioni in lingua inglese). Su tale sito sono disponibili le versioni più recenti degli esempi.

    • Individuare gli esempi sul computer in cui è installato Visual Studio. Il percorso di installazione predefinito degli esempi e del file Readme relativo è unità:\Programmi\Microsoft Visual Studio 9.0\Samples\lcid. Per le versioni Express di Visual Studio tutti gli esempi sono disponibili in linea.

Per ulteriori informazioni, vedere Individuazione dei file di esempio.

Nota sulla sicurezza:

In questo esempio di codice viene illustrato un concetto e viene presentato solo il codice rilevante. È possibile che questo esempio non soddisfi i requisiti di sicurezza per un ambiente specifico ed è opportuno non utilizzarlo così come viene riportato. È consigliabile aggiungere codice relativo alla sicurezza e alla gestione degli errori per rendere i progetti più sicuri e potenti. Microsoft fornisce questo esempio di codice "COSÌ COM'È" senza garanzie.

Per eseguire l'esempio

  • Premere F5.

Dimostrazione

La classe SampleCrypto incapsula l'algoritmo di crittografia, il valore salt e il vettore di inizializzazione (IV), nonché le routine di crittografia e decrittografia che definiscono un file crittografato. Il costruttore accetta un parametro che determina il tipo di crittografia, Rijndael o TripleDES. Il campo corrispondente nella classe, crpSym, è del tipo astratto SymmetricAlgorithm. È impostato su un'istanza della classe Rijndael o della classe TripleDESCryptoServiceProvider. Il metodo CreateSaltIVFile salva i valori salt e IV in un file DAT. I metodi Decrypt e Encrypt elaborano il file di origine specificato nella proprietà SourceFileName.

Quando viene caricato il form viene creata un'istanza della classe SampleCrypto. I controlli del form illustrano i metodi e le proprietà della classe SampleCrypto. Quando viene selezionato il controllo Encrypt with Password, la chiave non viene generata e impostata automaticamente, ma viene derivata da una password per cui è stato generato il valore salt. Inoltre, il valore salt e il vettore di inizializzazione (IV) vengono resi persistenti, in formato non crittografato, in un file DAT. In questo modo è possibile capire come inviare in modo protetto un documento a qualcuno: il documento crittografato può essere inviato lungo un collegamento non protetto e il file DAT e la password possono essere trasferiti in modo protetto utilizzando la crittografia asimmetrica (con chiave pubblica). Questa è la forma più protetta di crittografia, ma richiede molto più tempo. Per questo motivo viene di norma utilizzata per elementi piccoli, ad esempio una chiave privata, un file salt/IV o una password.

Vedere anche

Concetti

Modello di crittografia di .NET Framework

Riferimenti

TripleDESCryptoServiceProvider

Rijndael

SymmetricAlgorithm

Salt

IV