Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Anmärkning
Den här artikeln är specifik för .NET Framework. Det gäller inte för nyare implementeringar av .NET, inklusive .NET 6 och senare versioner.
Det finns fyra sätt för en utvecklare att skapa ett kryptografiobjekt med hjälp av Windows SDK:
Skapa ett objekt med hjälp av den nya operatorn.
Skapa ett objekt som implementerar en viss kryptografialgoritm genom att anropa metoden Skapa i den abstrakta klassen för den algoritmen.
Skapa ett objekt som implementerar en viss kryptografialgoritm genom att anropa CryptoConfig.CreateFromName metoden.
Skapa ett objekt som implementerar en klass med kryptografiska algoritmer (till exempel ett symmetriskt blockkryptering) genom att anropa metoden Skapa i den abstrakta klassen för den typen av algoritm (till exempel SymmetricAlgorithm).
Anta till exempel att en utvecklare vill beräkna SHA1-hashen för en uppsättning byte. Namnområdet System.Security.Cryptography innehåller två implementeringar av SHA1-algoritmen, en rent hanterad implementering och en som omsluter CryptoAPI. Utvecklaren kan välja att instansiera en viss SHA1-implementering (till exempel SHA1Managed) genom att anropa den nya operatorn. Men om det inte spelar någon roll vilken klass den gemensamma språkkörningen läser in så länge klassen implementerar SHA1-hashalgoritmen kan utvecklaren skapa ett objekt genom att anropa SHA1.Create metoden. Den här metoden anropar System.Security.Cryptography.CryptoConfig.CreateFromName("System.Security.Cryptography.SHA1"), som måste returnera en implementering av SHA1-hashalgoritmen.
Utvecklaren kan också anropa System.Security.Cryptography.CryptoConfig.CreateFromName("SHA1") eftersom kryptografikonfigurationen som standard innehåller korta namn för algoritmerna som levereras i .NET Framework.
Om det inte spelar någon roll vilken hash-algoritm som används kan utvecklaren HashAlgorithm.Create anropa metoden, som returnerar ett objekt som implementerar en hash-transformering.
Mappa algoritmnamn i konfigurationsfiler
Normalt returnerar runtime-miljön ett SHA1CryptoServiceProvider objekt för alla fyra scenarierna. En datoradministratör kan dock ändra vilken typ av objekt som metoderna i de två senaste scenarierna returnerar. För att göra detta måste du mappa ett eget algoritmnamn till den klass som du vill använda i datorkonfigurationsfilen (Machine.config).
I följande exempel visas hur du konfigurerar körningen så att System.Security.Cryptography.SHA1.Create, System.Security.CryptoConfig.CreateFromName("SHA1") och System.Security.Cryptography.HashAlgorithm.Create returnerar ett MySHA1HashClass objekt.
<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>
Du kan ange namnet på attributet i <cryptoClass-elementet> (i föregående exempel namnges attributet MySHA1Hash). Värdet för attributet i <cryptoClass-elementet> är en sträng som den vanliga språkkörningen använder för att hitta klassen. Du kan använda valfri sträng som uppfyller kraven som anges i Ange fullständigt kvalificerade typnamn.
Många algoritmnamn kan mappas till samma klass. Elementet< nameEntry> mappar en klass till ett eget algoritmnamn. Namnattributet kan antingen vara en sträng som används när du anropar metoden System.Security.Cryptography.CryptoConfig.CreateFromName eller namnet på en abstrakt kryptografiklass i System.Security.Cryptography namnområdet. Värdet för klassattributet är namnet på attributet i <cryptoClass-elementet> .
Anmärkning
Du kan hämta en SHA1-algoritm genom att anropa SHA1.Create metoden Security.CryptoConfig.CreateFromName("SHA1"). Varje metod garanterar endast att den returnerar ett objekt som implementerar SHA1-algoritmen. Du behöver inte mappa varje vänligt namn på en algoritm till samma klass i konfigurationsfilen.
En lista över standardnamn och de klasser som de mappas till finns i CryptoConfig.