Delen via


Algoritmenamen toewijzen aan cryptografieklassen

Notitie

Dit artikel is specifiek voor .NET Framework. Dit geldt niet voor nieuwere implementaties van .NET, waaronder .NET 6 en nieuwere versies.

Er zijn vier manieren waarop een ontwikkelaar een cryptografieobject kan maken met behulp van de Windows SDK:

  • Maak een object met behulp van de nieuwe operator.

  • Maak een object dat een bepaald cryptografie-algoritme implementeert door de methode Create aan te roepen voor de abstracte klasse voor dat algoritme.

  • Maak een object dat een bepaald cryptografie-algoritme implementeert door de methode aan te CryptoConfig.CreateFromName roepen.

  • Maak een object waarmee een klasse cryptografische algoritmen (zoals een symmetrisch blokversleuteling) worden geïmplementeerd door de methode Create aan te roepen voor de abstracte klasse voor dat type algoritme (zoals SymmetricAlgorithm).

Stel dat een ontwikkelaar de SHA1-hash van een set bytes wil berekenen. De System.Security.Cryptography naamruimte bevat twee implementaties van het SHA1-algoritme, één puur beheerde implementatie en één die CryptoAPI verpakt. De ontwikkelaar kan ervoor kiezen om een bepaalde SHA1-implementatie (zoals de SHA1Managed) te instantiëren door de nieuwe operator aan te roepen. Als het echter niet uitmaakt welke klasse de algemene taalruntime laadt zolang de klasse het SHA1-hashalgoritme implementeert, kan de ontwikkelaar een object maken door de SHA1.Create methode aan te roepen. Met deze methode wordt System.Security.Cryptography.CryptoConfig.CreateFromName("System.Security.Cryptography.SHA1") aangeroepen, die een implementatie van het SHA1-hashalgoritme moet retourneren.

De ontwikkelaar kan ook System.Security.Cryptography.CryptoConfig.CreateFromName("SHA1") aanroepen, omdat de cryptografieconfiguratie standaard korte namen bevat voor de algoritmen die zijn verzonden in .NET Framework.

Als het niet uitmaakt welk hash-algoritme wordt gebruikt, kan de ontwikkelaar de HashAlgorithm.Create methode aanroepen, die een object retourneert dat een hash-transformatie implementeert.

Namen van toewijzingsalgoritmen in configuratiebestanden

Standaard retourneert de runtime een SHA1CryptoServiceProvider object voor alle vier de scenario's. Een computerbeheerder kan echter het type object wijzigen dat de methoden in de laatste twee scenario's retourneren. Hiervoor moet u een beschrijvende algoritmenaam toewijzen aan de klasse die u wilt gebruiken in het machineconfiguratiebestand (Machine.config).

In het volgende voorbeeld ziet u hoe u de runtime zo configureert dat System.Security.Cryptography.SHA1.Create, System.Security.CryptoConfig.CreateFromName("SHA1") en System.Security.Cryptography.HashAlgorithm.Create een MySHA1HashClass object retourneren.

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

U kunt de naam van het kenmerk opgeven in het cryptoClass-element (in het <vorige voorbeeld wordt het kenmerk MySHA1Hashgenoemd).> De waarde van het kenmerk in het <cryptoClass-element> is een tekenreeks die de algemene taalruntime gebruikt om de klasse te vinden. U kunt elke tekenreeks gebruiken die voldoet aan de vereisten die zijn opgegeven in Volledig gekwalificeerde typenamen opgeven.

Veel algoritmenamen kunnen worden toegewezen aan dezelfde klasse. Het <element nameEntry> wijst een klasse toe aan één beschrijvende algoritmenaam. Het naamkenmerk kan een tekenreeks zijn die wordt gebruikt bij het aanroepen van de methode System.Security.Cryptography.CryptoConfig.CreateFromName of de naam van een abstracte cryptografieklasse in de System.Security.Cryptography naamruimte. De waarde van het klassekenmerk is de naam van het kenmerk in het <cryptoClass-element> .

Notitie

U kunt een SHA1-algoritme ophalen door de SHA1.Createmethode Security.CryptoConfig.CreateFromName("SHA1") aan te roepen. Elke methode garandeert alleen dat er een object wordt geretourneerd dat het SHA1-algoritme implementeert. U hoeft niet elke beschrijvende naam van een algoritme toe te wijzen aan dezelfde klasse in het configuratiebestand.

Zie voor een lijst met standaardnamen en de klassen waaraan ze zijn toegewezen CryptoConfig.

Zie ook