Auf Englisch lesen

Teilen über


AsymmetricAlgorithm Klasse

Definition

Stellt die abstrakte Basisklasse dar, von der alle Implementierungen von asymmetrischen Algorithmen erben müssen.

C#
public abstract class AsymmetricAlgorithm : IDisposable
C#
[System.Runtime.InteropServices.ComVisible(true)]
public abstract class AsymmetricAlgorithm : IDisposable
Vererbung
AsymmetricAlgorithm
Abgeleitet
Attribute
Implementiert

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie ein benutzerdefinierter asymmetrischer Algorithmus implementiert wird, der von der AsymmetricAlgorithm -Klasse geerbt wird. Eine zusätzliche Klasse wird bereitgestellt, um die Verwendung der benutzerdefinierten Klasse zu veranschaulichen.

C#
using System;
using System.Xml;
using System.Text;
using System.Security.Cryptography;
using System.Reflection;

[assembly: AssemblyKeyFile("CustomCrypto.snk")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: CLSCompliant(true)]
namespace Contoso
{
    // Define a CustomCrypto class that inherits from the AsymmetricAlgorithm
    // class.
    public class CustomCrypto : 
        System.Security.Cryptography.AsymmetricAlgorithm
    {
        // Declare local member variables.
        private CspParameters cspParameters;
        private readonly KeySizes[] keySizes = {new KeySizes(8, 64, 8)};

        // Initialize a CustomCrypto with the default key size of 8.
        public CustomCrypto()
        {
            this.KeySize = 8;
        }

        // Initialize a CustomCrypto with the specified key size.
        public CustomCrypto(int keySize)
        {
            this.KeySize = keySize;
        }

        // Accessor function for keySizes member variable.
        public override KeySizes[] LegalKeySizes 
        { 
            get { return (KeySizes[])keySizes.Clone(); }
        }

        // Modify the KeySizeValue property inherited from the Asymmetric
        // class. Prior to setting the value, ensure it falls within the
        // range identified in the local keySizes member variable.
        public override int KeySize 
        {
            get { return KeySizeValue; }
            set
            {
                for (int i=0; i < keySizes.Length; i++)
                {
                    if (keySizes[i].SkipSize == 0) 
                    {
                        if (keySizes[i].MinSize == value)
                        {
                            KeySizeValue = value;
                            return;
                        }
                    }
                    else
                    {
                        for (int j = keySizes[i].MinSize;
                            j <= keySizes[i].MaxSize;
                            j += keySizes[i].SkipSize)
                        {
                            if (j == value)
                            {
                                KeySizeValue = value;
                                return;
                            }
                        }
                    }
                }

                // If the key does not fall within the range identified 
                // in the keySizes member variable, throw an exception.
                throw new CryptographicException("Invalid key size.");
            }
        }

        // Initialize the parameters with default values.
        public void InitializeParameters()
        {
            cspParameters = new CspParameters();
            cspParameters.ProviderName = "Contoso";
            cspParameters.KeyContainerName = "SecurityBin1";
            cspParameters.KeyNumber = 1;
            cspParameters.ProviderType = 2;
        }

        // Parse specified xmlString for values to populate the CspParams
        // Expected XML schema:
        //      <ProviderName></ProviderName>
        //      <KeyContainerName></KeyContainerName>
        //      <KeyNumber></KeyNumber>
        //      <ProviderType></ProviderType>
        public override void FromXmlString(string xmlString)
        {
            if (xmlString != null)
            {
                XmlDocument doc = new XmlDocument();
                doc.LoadXml(xmlString);
                XmlNode firstNode = doc.FirstChild;
                XmlNodeList nodeList;

                // Assemble parameters from values in each XML element.
                cspParameters = new CspParameters();

                // KeyContainerName is optional.
                nodeList = doc.GetElementsByTagName("KeyContainerName");
                string keyName = nodeList.Item(0).InnerText;
                if (keyName != null) 
                {
                    cspParameters.KeyContainerName = keyName;
                }

                // KeyNumber is optional.
                nodeList = doc.GetElementsByTagName("KeyNumber");
                string keyNumber = nodeList.Item(0).InnerText;
                if (keyNumber != null) 
                {
                    cspParameters.KeyNumber = Int32.Parse(keyNumber);
                }

                // ProviderName is optional.
                nodeList = doc.GetElementsByTagName("ProviderName");
                string providerName = nodeList.Item(0).InnerText;
                if (providerName != null) 
                {
                    cspParameters.ProviderName = providerName;
                }

                // ProviderType is optional.
                nodeList = doc.GetElementsByTagName("ProviderType");
                string providerType = nodeList.Item(0).InnerText;
                if (providerType != null) 
                {
                    cspParameters.ProviderType = Int32.Parse(providerType);
                }
            }
            else
            {
                throw new ArgumentNullException("xmlString");
            }
        }

        // Create an XML string representation of the parameters in the
        // current customCrypto object.
        public override string ToXmlString(bool includePrivateParameters)
        {
            string keyContainerName = "";
            string keyNumber = "";
            string providerName = "";
            string providerType = "";

            if (cspParameters != null)
            {
                keyContainerName = cspParameters.KeyContainerName;
                keyNumber = cspParameters.KeyNumber.ToString();
                providerName = cspParameters.ProviderName;
                providerType = cspParameters.ProviderType.ToString();
            }

            StringBuilder sb = new StringBuilder();
            sb.Append("<CustomCryptoKeyValue>");

            sb.Append("<KeyContainerName>");
            sb.Append(keyContainerName);
            sb.Append("</KeyContainerName>");

            sb.Append("<KeyNumber>");
            sb.Append(keyNumber);
            sb.Append("</KeyNumber>");

            sb.Append("<ProviderName>");
            sb.Append(providerName);
            sb.Append("</ProviderName>");

            sb.Append("<ProviderType>");
            sb.Append(providerType);
            sb.Append("</ProviderType>");

            sb.Append("</CustomCryptoKeyValue>");
            return(sb.ToString());
        }

        // Return the name for the key exchange algorithm.
        public override string KeyExchangeAlgorithm
        {
            get {return "RSA-PKCS1-KeyEx";}
        }

        // Retrieves the name of the signature alogrithm.
        // This example uses the SHA1 algorithm.
        // Due to collision problems with SHA1, Microsoft recommends SHA256 or better.
        public override string SignatureAlgorithm 
        {
            get {return "http://www.w3.org/2000/09/xmldsig#rsa-sha1";}
        }

        // Required member for implementing the AsymmetricAlgorithm class.
        protected override void Dispose(bool disposing) {}

        // Call the Create method using the CustomCrypto assembly name.
        // The create function attempts to create a CustomCrypto object using
        // the assembly name. This functionality requires modification of the
        // machine.config file. Add the following section to the configuration
        // element and modify the values of the cryptoClass to reflect what is
        // installed in your machines GAC.
        //        <cryptoClass CustomCrypto="Contoso.CustomCrypto, 
        //          CustomCrypto, 
        //          Culture=neutral, 
        //          PublicKeyToken=fdb9f9c4851028bf, 
        //          Version=1.0.1448.27640" />
        //      <nameEntry name="Contoso.CustomCrypto" class="CustomCrypto" />
        //      <nameEntry name="CustomCrypto" class="CustomCrypto" />
        new static public CustomCrypto Create() 
        {
            return Create("CustomCrypto");
        }

        // Create a CustomCrypto object by calling CrytoConfig's
        // CreateFromName method and casting the type to CustomCrypto.
        // The create function attempts to create a CustomCrypto object using
        // the assembly name. This functionality requires modification of the
        // machine.config file. Add the following section to the configuration
        // element and modify the values of the cryptoClass to reflect what is
        // installed in your machines GAC.
        //       <cryptoClass CustomCrypto="Contoso.CustomCrypto, 
        //         CustomCrypto, 
        //         Culture=neutral, 
        //         PublicKeyToken=fdb9f9c4851028bf, 
        //         Version=1.0.1448.27640" />
        //     <nameEntry name="Contoso.CustomCrypto" class="CustomCrypto" />
        //     <nameEntry name="CustomCrypto" class="CustomCrypto" />
        new static public CustomCrypto Create(String algorithmName) 
        {
            return (CustomCrypto) CryptoConfig.CreateFromName(algorithmName);
        }
    }
    class CustomCryptoImpl
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Construct a CustomCrypto object and initialize its
            // CspParameters.
            CustomCrypto customCrypto = new CustomCrypto();
            customCrypto.InitializeParameters();

            // Display properties of the current customCrypto object.
            Console.WriteLine("*** CustomCrypto created with default " + 
                "parameters:");
            DisplayProperties(customCrypto);

            // Release all the resources used by this instance of 
            // CustomCrytpo.
            customCrypto.Clear();

            customCrypto = new CustomCrypto(64);
            // Create new parameters and set them by using the FromXmlString
            // method.
            string parameterXml = "<CustomCryptoKeyValue>";
            parameterXml += "<ProviderName>Contoso</ProviderName>";
            parameterXml += "<KeyContainerName>SecurityBin2";
            parameterXml += "</KeyContainerName>";
            parameterXml += "<KeyNumber>1</KeyNumber>";
            parameterXml += "<ProviderType>2</ProviderType>";
            parameterXml += "</CustomCryptoKeyValue>";
            customCrypto.FromXmlString(parameterXml);

            // Display the properties of a customCrypto object created with
            // custom parameters.
            Console.WriteLine("\n*** " + 
                "CustomCrypto created with custom parameters:");
            DisplayProperties(customCrypto);

            // Create an object by using the assembly name.
            try
            {
                CustomCrypto myCryptoA = CustomCrypto.Create("CustomCrypto");
                if (myCryptoA != null)
                {
                    Console.Write("\n*** " + 
                        "Successfully created CustomCrytpo from");
                    Console.WriteLine(" the Create method.");

                    DisplayProperties(myCryptoA);
                }
                else
                {
                    Console.Write("Unable to create CustomCrytpo from ");
                    Console.WriteLine(" the Create method.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            
            Console.WriteLine("This sample completed successfully; " +
                "press Enter to exit.");
            Console.ReadLine();
        }
        // Display the properties of the specified CustomCrypto object to the
        // console.
        public static void DisplayProperties(CustomCrypto customCrypto)
        {
            try
            {
                // Retrieve the class description for the customCrypto object.
                string classDescription = customCrypto.ToString();

                Console.WriteLine(classDescription);
                Console.Write("KeyExchangeAlgorithm: ");
                Console.WriteLine(customCrypto.KeyExchangeAlgorithm);
                Console.Write("SignatureAlgorithm: ");
                Console.WriteLine(customCrypto.SignatureAlgorithm);
                Console.WriteLine("KeySize: " + customCrypto.KeySize);
                Console.WriteLine("Parameters described in Xml format:");
                Console.WriteLine(customCrypto.ToXmlString(true));

                // Display the MinSize, MaxSize, and SkipSize properties of 
                // each KeySize item in the local keySizes member variable.
                KeySizes[] legalKeySizes = customCrypto.LegalKeySizes;
                if (legalKeySizes.Length > 0)
                {
                    for (int i=0; i < legalKeySizes.Length; i++)
                    {
                        Console.Write("Keysize" + i + " min, max, step: ");
                        Console.Write(legalKeySizes[i].MinSize + ", ");
                        Console.Write(legalKeySizes[i].MaxSize + ", ");
                        Console.WriteLine(legalKeySizes[i].SkipSize + ", ");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Caught unexpected exception: " + 
                    ex.ToString());
            }
        }
    }
}
//
// This sample produces the following output:
//
// *** CustomCrypto created with default parameters:
// Contoso.vbCustomCrypto
// KeyExchangeAlgorithm: RSA-PKCS1-KeyEx
// SignatureAlgorithm: http://www.w3.org/2000/09/xmldsig#rsa-sha1
// KeySize: 8
// Parameters described in Xml format:
// <CustomCryptoKeyValue><KeyContainerName>SecurityBin1</KeyContainerName>
// <KeyNumber>1</KeyNumber><ProviderName>Contoso</ProviderName>
// <ProviderType>2</ProviderType></CustomCryptoKeyValue>
// Keysize0 min, max, step: 8, 64, 8, 
// 
// *** CustomCrypto created with custom parameters:
// Contoso.vbCustomCrypto
// KeyExchangeAlgorithm: RSA-PKCS1-KeyEx
// SignatureAlgorithm: http://www.w3.org/2000/09/xmldsig#rsa-sha1
// KeySize: 64
// Parameters described in Xml format:
// <CustomCryptoKeyValue><KeyContainerName>SecurityBin2</KeyContainerName>
// <KeyNumber>1</KeyNumber><ProviderName>Contoso</ProviderName>
// <ProviderType>2</ProviderType></CustomCryptoKeyValue>
// Keysize0 min, max, step: 8, 64, 8, 
// Unable to create CustomCrytpo from  the Create method
// This sample completed successfully; press Exit to continue.

Hier ist eine zusätzliche Klasse, die veranschaulicht, wie die benutzerdefinierte Klasse verwendet wird.

C#
    class CustomCryptoImpl
    {
        [STAThread]
        static void Main(string[] args)
        {
            // Construct a CustomCrypto object and initialize its
            // CspParameters.
            CustomCrypto customCrypto = new CustomCrypto();
            customCrypto.InitializeParameters();

            // Display properties of the current customCrypto object.
            Console.WriteLine("*** CustomCrypto created with default " + 
                "parameters:");
            DisplayProperties(customCrypto);

            // Release all the resources used by this instance of 
            // CustomCrytpo.
            customCrypto.Clear();

            customCrypto = new CustomCrypto(64);
            // Create new parameters and set them by using the FromXmlString
            // method.
            string parameterXml = "<CustomCryptoKeyValue>";
            parameterXml += "<ProviderName>Contoso</ProviderName>";
            parameterXml += "<KeyContainerName>SecurityBin2";
            parameterXml += "</KeyContainerName>";
            parameterXml += "<KeyNumber>1</KeyNumber>";
            parameterXml += "<ProviderType>2</ProviderType>";
            parameterXml += "</CustomCryptoKeyValue>";
            customCrypto.FromXmlString(parameterXml);

            // Display the properties of a customCrypto object created with
            // custom parameters.
            Console.WriteLine("\n*** " + 
                "CustomCrypto created with custom parameters:");
            DisplayProperties(customCrypto);

            // Create an object by using the assembly name.
            try
            {
                CustomCrypto myCryptoA = CustomCrypto.Create("CustomCrypto");
                if (myCryptoA != null)
                {
                    Console.Write("\n*** " + 
                        "Successfully created CustomCrytpo from");
                    Console.WriteLine(" the Create method.");

                    DisplayProperties(myCryptoA);
                }
                else
                {
                    Console.Write("Unable to create CustomCrytpo from ");
                    Console.WriteLine(" the Create method.");
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }
            
            Console.WriteLine("This sample completed successfully; " +
                "press Enter to exit.");
            Console.ReadLine();
        }
        // Display the properties of the specified CustomCrypto object to the
        // console.
        public static void DisplayProperties(CustomCrypto customCrypto)
        {
            try
            {
                // Retrieve the class description for the customCrypto object.
                string classDescription = customCrypto.ToString();

                Console.WriteLine(classDescription);
                Console.Write("KeyExchangeAlgorithm: ");
                Console.WriteLine(customCrypto.KeyExchangeAlgorithm);
                Console.Write("SignatureAlgorithm: ");
                Console.WriteLine(customCrypto.SignatureAlgorithm);
                Console.WriteLine("KeySize: " + customCrypto.KeySize);
                Console.WriteLine("Parameters described in Xml format:");
                Console.WriteLine(customCrypto.ToXmlString(true));

                // Display the MinSize, MaxSize, and SkipSize properties of 
                // each KeySize item in the local keySizes member variable.
                KeySizes[] legalKeySizes = customCrypto.LegalKeySizes;
                if (legalKeySizes.Length > 0)
                {
                    for (int i=0; i < legalKeySizes.Length; i++)
                    {
                        Console.Write("Keysize" + i + " min, max, step: ");
                        Console.Write(legalKeySizes[i].MinSize + ", ");
                        Console.Write(legalKeySizes[i].MaxSize + ", ");
                        Console.WriteLine(legalKeySizes[i].SkipSize + ", ");
                    }
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine("Caught unexpected exception: " + 
                    ex.ToString());
            }
        }
    }
}
//
// This sample produces the following output:
//
// *** CustomCrypto created with default parameters:
// Contoso.vbCustomCrypto
// KeyExchangeAlgorithm: RSA-PKCS1-KeyEx
// SignatureAlgorithm: http://www.w3.org/2000/09/xmldsig#rsa-sha1
// KeySize: 8
// Parameters described in Xml format:
// <CustomCryptoKeyValue><KeyContainerName>SecurityBin1</KeyContainerName>
// <KeyNumber>1</KeyNumber><ProviderName>Contoso</ProviderName>
// <ProviderType>2</ProviderType></CustomCryptoKeyValue>
// Keysize0 min, max, step: 8, 64, 8, 
// 
// *** CustomCrypto created with custom parameters:
// Contoso.vbCustomCrypto
// KeyExchangeAlgorithm: RSA-PKCS1-KeyEx
// SignatureAlgorithm: http://www.w3.org/2000/09/xmldsig#rsa-sha1
// KeySize: 64
// Parameters described in Xml format:
// <CustomCryptoKeyValue><KeyContainerName>SecurityBin2</KeyContainerName>
// <KeyNumber>1</KeyNumber><ProviderName>Contoso</ProviderName>
// <ProviderType>2</ProviderType></CustomCryptoKeyValue>
// Keysize0 min, max, step: 8, 64, 8, 
// Unable to create CustomCrytpo from  the Create method
// This sample completed successfully; press Exit to continue.

Hinweise

Asymmetrische Kryptografiealgorithmen, die auch als Algorithmen für öffentliche Schlüssel bezeichnet werden, erfordern, dass sowohl Absender als auch Empfänger ein Paar verwandter Schlüssel verwalten: einen privaten Schlüssel und einen öffentlichen Schlüssel. Beide Schlüssel sind für die Entität eindeutig. Der öffentliche Schlüssel kann jedem zur Verfügung gestellt werden; Dieser Schlüssel wird zum Codieren von Daten verwendet, die an einen Empfänger gesendet werden. Der private Schlüssel muss vom Empfänger privat gehalten werden; Dieser Schlüssel wird zum Decodieren von Nachrichten verwendet, die mit dem öffentlichen Schlüssel des Empfängers codiert wurden. Die RSACryptoServiceProvider -Klasse ist eine Implementierung eines Public Key-Algorithmus. Eine ausführliche Erläuterung der Verschlüsselung und algorithmen für öffentliche Schlüssel finden Sie im Abschnitt "Verschlüsselung mit öffentlichem Schlüssel" unter Kryptografiedienste. Informationen zur Verwendung des Strong Name-Tools (Sn.exe) zum Erstellen von Schlüsselpaaren finden Sie unter Vorgehensweise: Erstellen eines Public-Private Schlüsselpaars.

Sie können Systeme mit öffentlichem Schlüssel verwenden, um digitale Signaturen zu erstellen. Digitale Signaturen werden verwendet, um die Integrität von Daten zu schützen. Um beispielsweise ein System mit öffentlichem Schlüssel zum digitalen Signieren einer Nachricht zu verwenden, wendet der Absender zuerst eine Hashfunktion auf die Nachricht an, um einen Nachrichtendigest zu erstellen. Der Absender verschlüsselt dann den Nachrichtendigest mit dem privaten Schlüssel des Absenders, um die persönliche Signatur des Absenders zu erstellen. Beim Empfang der Nachricht und Signatur entschlüsselt der Empfänger die Signatur mithilfe des öffentlichen Schlüssels des Absenders, um den Nachrichtendigest wiederherzustellen, und hashet die Nachricht mit demselben Hashalgorithmus, den der Absender verwendet hat. Wenn der vom Empfänger berechnete Nachrichtendigest mit dem vom Absender empfangenen Nachrichtendigest übereinstimmt, kann der Empfänger davon ausgehen, dass die Nachricht während der Übertragung nicht geändert wurde. Beachten Sie, dass jeder eine Signatur überprüfen kann, da der öffentliche Schlüssel des Absenders allgemein bekannt ist. Diese Technik behält nicht das Geheimnis der Nachricht bei; Damit die Nachricht geheim ist, muss sie ebenfalls verschlüsselt sein.

.NET Framework stellt die folgenden Klassen bereit, die Algorithmen für digitale Signaturen implementieren: DSACryptoServiceProvider, RSACryptoServiceProvider, ECDsa (Basisklasse) und ECDsaCng.

Der System.Security.Cryptography -Namespace stellt konkrete Klassen nur für RSA und DSA bereit.

Informationen zum Verwenden des RSA-Algorithmus zum Verschlüsseln und Entschlüsseln von XML-Daten sowie zum Erstellen und Überprüfen digitaler XML-Signaturen finden Sie in den folgenden Artikeln:

Konstruktoren

AsymmetricAlgorithm()

Initialisiert eine neue Instanz der AsymmetricAlgorithm-Klasse.

Felder

KeySizeValue

Stellt die Größe des vom asymmetrischen Algorithmus verwendeten Schlüsselmodulos in Bits dar.

LegalKeySizesValue

Gibt die vom asymmetrischen Algorithmus unterstützten Schlüsselgrößen an.

Eigenschaften

KeyExchangeAlgorithm

Ruft beim Überschreiben in einer abgeleiteten Klasse den Namen des Algorithmus für den Schlüsselaustausch ab. Löst andernfalls eine NotImplementedException aus.

KeySize

Ruft die Größe des vom asymmetrischen Algorithmus verwendeten Schlüsselmodulos in Bits ab oder legt diese fest.

LegalKeySizes

Ruft die vom asymmetrischen Algorithmus unterstützten Schlüsselgrößen ab.

SignatureAlgorithm

Ruft beim Implementieren in einer abgeleiteten Klasse den Namen des Signaturalgorithmus ab. Löst andernfalls immer eine NotImplementedException aus.

Methoden

Clear()

Gibt alle von der AsymmetricAlgorithm-Klasse verwendeten Ressourcen frei.

Create()
Veraltet.
Veraltet.

Erstellt ein Standardkryptografieobjekt zum Ausführen des asymmetrischen Algorithmus.

Create(String)
Veraltet.

Erstellt eine Instanz der angegebenen Implementierung eines symmetrischen Algorithmus.

Dispose()

Gibt alle von der aktuellen Instanz der AsymmetricAlgorithm-Klasse verwendeten Ressourcen frei.

Dispose(Boolean)

Gibt die von der AsymmetricAlgorithm-Klasse verwendeten nicht verwalteten Ressourcen frei und gibt (optional) auch die verwalteten Ressourcen frei.

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters)

Exportiert den aktuellen Schlüssel in das Format „PKCS#8 EncryptedPrivateKeyInfo“ mit einem bytebasierten Kennwort.

ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters)

Exportiert den aktuellen Schlüssel in das Format „PKCS#8 EncryptedPrivateKeyInfo“ mit einem zeichenbasierten Kennwort.

ExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Byte>, PbeParameters)

Exportiert den aktuellen Schlüssel im PKCS#8 EncryptedPrivateKeyInfo-Format mit einem bytebasierten Kennwort, PEM-codiert.

ExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Char>, PbeParameters)

Exportiert den aktuellen Schlüssel im PKCS#8 EncryptedPrivateKeyInfo-Format mit einem charbasierten Kennwort, PEM-codiert.

ExportPkcs8PrivateKey()

Exportiert den aktuellen Schlüssel im Format „PKCS#8 PrivateKeyInfo“.

ExportPkcs8PrivateKeyPem()

Exportiert den aktuellen Schlüssel im PKCS#8 PrivateKeyInfo-Format, PEM-codiert.

ExportSubjectPublicKeyInfo()

Exportiert den Teil mit dem öffentlichen Schlüssel des aktuellen Schlüssels in das Format „X.509 SubjectPublicKeyInfo“.

ExportSubjectPublicKeyInfoPem()

Exportiert den öffentlichen Schlüsselteil des aktuellen Schlüssels im X.509 SubjectPublicKeyInfo-Format, PEM-codiert.

FromXmlString(String)

Stellt beim Überschreiben in einer abgeleiteten Klasse ein AsymmetricAlgorithm-Objekt aus einer XML-Zeichenfolge wieder her. Löst andernfalls eine NotImplementedException aus.

GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Int32)

Wenn das Element in eine abgeleitete Klasse überschrieben wird, wird das öffentliche/private Schlüsselpaar aus einer PKCS#8-EncryptedPrivateKeyInfo-Struktur nach der Entschlüsselung mit einem bytebasierten Kennwort importiert und ersetzt die Schlüssel für dieses Objekt.

ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, ReadOnlySpan<Byte>, Int32)

Wenn das Element in eine abgeleitete Klasse überschrieben wird, wird das öffentliche/private Schlüsselpaar aus einer PKCS#8-EncryptedPrivateKeyInfo-Struktur nach der Entschlüsselung mit einem zeichenbasierten Kennwort importiert und ersetzt die Schlüssel für dieses Objekt.

ImportFromEncryptedPem(ReadOnlySpan<Char>, ReadOnlySpan<Byte>)

Importiert bei Überschreibung in einer abgeleiteten Klasse einen verschlüsselten, mit RFC 7468 PEM-codierten privaten Schlüssel und ersetzt die Schlüssel für dieses Objekt.

ImportFromEncryptedPem(ReadOnlySpan<Char>, ReadOnlySpan<Char>)

Importiert bei Überschreibung in einer abgeleiteten Klasse einen verschlüsselten, mit RFC 7468 PEM-codierten privaten Schlüssel und ersetzt die Schlüssel für dieses Objekt.

ImportFromPem(ReadOnlySpan<Char>)

Importiert beim Überschreiben in einer abgeleiteten Klasse einen textcodierten RFC 7468-Schlüssel und ersetzt die Schlüssel für dieses Objekt.

ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32)

Wenn das Element in eine abgeleitete Klasse überschrieben wird, wird das öffentliche/private Schlüsselpaar nach der Entschlüsselung aus einer PKCS#8-PrivateKeyInfo-Struktur importiert und ersetzt die Schlüssel für dieses Objekt.

ImportSubjectPublicKeyInfo(ReadOnlySpan<Byte>, Int32)

Wenn das Element in eine abgeleitete Klasse überschrieben wird, wird der öffentliche Schlüssel nach der Entschlüsselung aus einer X.509-SubjectPublicKeyInfo-Struktur importiert und ersetzt die Schlüssel für dieses Objekt.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
ToXmlString(Boolean)

Erstellt beim Überschreiben in einer abgeleiteten Klasse eine XML-Zeichenfolgendarstellung des aktuellen AsymmetricAlgorithm-Objekts und gibt diese zurück. Löst andernfalls eine NotImplementedException aus.

TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters, Span<Byte>, Int32)

Wenn das Element in eine abgeleitete Klasse überschrieben wird, wird mit einem bytebasierten Kennwort versucht, den aktuellen Schlüssel in einen bereitgestellten Puffer in das PKCS#8-EncryptedPrivateKeyInfo-Format zu exportieren.

TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters, Span<Byte>, Int32)

Wenn das Element in eine abgeleitete Klasse überschrieben wird, wird mit einem zeichenbasierten Kennwort versucht, den aktuellen Schlüssel in einen bereitgestellten Puffer in das PKCS#8-EncryptedPrivateKeyInfo-Format zu exportieren.

TryExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Byte>, PbeParameters, Span<Char>, Int32)

Versucht, den aktuellen Schlüssel im PKCS#8 EncryptedPrivateKeyInfo-Format mit einem bytebasierten Kennwort( PEM-codiert) zu exportieren.

TryExportEncryptedPkcs8PrivateKeyPem(ReadOnlySpan<Char>, PbeParameters, Span<Char>, Int32)

Exportiert den aktuellen Schlüssel im PKCS#8 EncryptedPrivateKeyInfo-Format mit einem charbasierten Kennwort, PEM-codiert.

TryExportPkcs8PrivateKey(Span<Byte>, Int32)

Wenn das Element in eine abgeleitete Klasse überschrieben wird, wird versucht, den aktuellen Schlüssel in einen bereitgestellten Puffer in das PKCS#8-PrivateKeyInfo-Format zu exportieren.

TryExportPkcs8PrivateKeyPem(Span<Char>, Int32)

Versucht, den aktuellen Schlüssel im PEM-codierten PKCS#8 PrivateKeyInfo-Format in einen bereitgestellten Puffer zu exportieren.

TryExportSubjectPublicKeyInfo(Span<Byte>, Int32)

Wenn das Element in eine abgeleitete Klasse überschrieben wird, wird versucht, den aktuellen Schlüssel in einen bereitgestellten Puffer in das X.509-SubjectPublicKeyInfo-Format zu exportieren.

TryExportSubjectPublicKeyInfoPem(Span<Char>, Int32)

Versucht, den aktuellen Schlüssel im PEM-codierten X.509 SubjectPublicKeyInfo-Format in einen bereitgestellten Puffer zu exportieren.

Explizite Schnittstellenimplementierungen

IDisposable.Dispose()

Diese API unterstützt die Produktinfrastruktur und ist nicht für die direkte Verwendung aus Ihrem Code gedacht.

Eine Beschreibung dieses Elements finden Sie unter Dispose().

Gilt für:

Produkt Versionen
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 1.3, 1.4, 1.6, 2.0, 2.1

Weitere Informationen