Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Annotazioni
Questo articolo è specifico di .NET Framework. Non si applica alle implementazioni più recenti di .NET, incluse .NET 6 e versioni successive.
Uno sviluppatore può creare un oggetto di crittografia usando Windows SDK in quattro modi:
Creare un oggetto usando l'operatore
new.Creare un oggetto che implementa un particolare algoritmo di crittografia chiamando il
Createmetodo sulla classe astratta per tale algoritmo.Creare un oggetto che implementa un particolare algoritmo di crittografia chiamando il CryptoConfig.CreateFromName metodo .
Creare un oggetto che implementa una classe di algoritmi di crittografia (ad esempio una crittografia a blocchi simmetrici) chiamando il
Createmetodo sulla classe astratta per quel tipo di algoritmo , ad esempio SymmetricAlgorithm.
Si supponga, ad esempio, che uno sviluppatore voglia calcolare l'hash SHA1 di un set di byte. Lo System.Security.Cryptography spazio dei nomi contiene due implementazioni dell'algoritmo SHA1, un'implementazione puramente gestita e una che esegue il wrapping di CryptoAPI. Lo sviluppatore può scegliere di creare un'istanza di una particolare implementazione SHA1 ,ad esempio SHA1Managed, chiamando l'operatore new . Tuttavia, se non importa quale classe viene caricata da Common Language Runtime, purché la classe implementi l'algoritmo hash SHA1, lo sviluppatore può creare un oggetto chiamando il SHA1.Create metodo . Questo metodo chiama System.Security.Cryptography.CryptoConfig.CreateFromName("System.Security.Cryptography.SHA1") che deve restituire un'implementazione dell'algoritmo hash SHA1.
Lo sviluppatore può anche chiamare System.Security.Cryptography.CryptoConfig.CreateFromName("SHA1") perché, per impostazione predefinita, la configurazione della crittografia include nomi brevi per gli algoritmi forniti in .NET Framework.
Se non è importante quale algoritmo hash viene usato, lo sviluppatore può chiamare il HashAlgorithm.Create metodo , che restituisce un oggetto che implementa una trasformazione hash.
Mappatura dei nomi degli algoritmi nei file di configurazione
Per impostazione predefinita, il runtime restituisce un SHA1CryptoServiceProvider oggetto per tutti e quattro gli scenari. Tuttavia, un amministratore del computer può modificare il tipo di oggetto restituito dai metodi negli ultimi due scenari. A tale scopo, è necessario eseguire il mapping di un nome descrittivo dell'algoritmo alla classe da usare nel file di configurazione del computer (Machine.config).
Nell'esempio seguente viene illustrato come configurare il runtime in modo che System.Security.Cryptography.SHA1.Create, System.Security.CryptoConfig.CreateFromName("SHA1") e System.Security.Cryptography.HashAlgorithm.Create restituisca un MySHA1HashClass oggetto .
<configuration>
<!-- Other configuration settings. -->
<mscorlib>
<cryptographySettings>
<cryptoNameMapping>
<cryptoClasses>
<cryptoClass MySHA1Hash="MySHA1HashClass, MyAssembly
Culture='en', PublicKeyToken=a5d015c7d5a0b012,
Version=1.0.0.0"/>
</cryptoClasses>
<nameEntry name="SHA1" class="MySHA1Hash"/>
<nameEntry name="System.Security.Cryptography.SHA1"
class="MySHA1Hash"/>
<nameEntry name="System.Security.Cryptography.HashAlgorithm"
class="MySHA1Hash"/>
</cryptoNameMapping>
</cryptographySettings>
</mscorlib>
</configuration>
È possibile specificare il nome dell'attributo nell'elemento<cryptoClass> (l'esempio precedente assegna all'attributo MySHA1Hashil nome ). Il valore dell'attributo nell'elemento <cryptoClass> è una stringa usata da Common Language Runtime per trovare la classe . È possibile usare qualsiasi stringa che soddisfi i requisiti specificati in Specifica dei nomi di tipi completi.
Molti nomi di algoritmi possono essere mappati alla stessa classe. L'elemento name può essere una stringa utilizzata quando si chiama il metodo System.Security.Cryptography.CryptoConfig.CreateFromName o il nome di una classe di crittografia astratta nello spazio dei System.Security.Cryptography nomi. Il valore dell'attributo class è il nome dell'attributo nell'elemento <cryptoClass> .
Annotazioni
È possibile ottenere un algoritmo SHA1 chiamando il SHA1.Create metodo o Security.CryptoConfig.CreateFromName("SHA1"). Ogni metodo garantisce solo che restituisce un oggetto che implementa l'algoritmo SHA1. Non è necessario eseguire il mapping di ogni nome descrittivo di un algoritmo alla stessa classe nel file di configurazione.
Per un elenco dei nomi predefiniti e delle classi a cui corrispondono, vedere CryptoConfig.