ECDiffieHellmanCng Класс

Определение

Предоставляет реализацию CNG алгоритма Диффи-Хеллмана на эллиптических кривых (ECDH).Provides a Cryptography Next Generation (CNG) implementation of the Elliptic Curve Diffie-Hellman (ECDH) algorithm. Этот класс используется для выполнения криптографических операций.This class is used to perform cryptographic operations.

public ref class ECDiffieHellmanCng sealed : System::Security::Cryptography::ECDiffieHellman
public sealed class ECDiffieHellmanCng : System.Security.Cryptography.ECDiffieHellman
type ECDiffieHellmanCng = class
    inherit ECDiffieHellman
Public NotInheritable Class ECDiffieHellmanCng
Inherits ECDiffieHellman
Наследование

Примеры

В следующем примере показано, как использовать ECDiffieHellmanCng класс для установки обмена ключами и как использовать этот ключ для шифрования сообщения, которое может быть отправлено через открытый канал и расшифровано получателем.The following example shows how to use the ECDiffieHellmanCng class to establish a key exchange and how to use that key to encrypt a message that can be sent over a public channel and decrypted by the receiver.

using System;
using System.IO;
using System.Security.Cryptography;
using System.Text;


class Alice
{
    public static byte[] alicePublicKey;

    public static void Main(string[] args)
    {
        using (ECDiffieHellmanCng alice = new ECDiffieHellmanCng())
        {

            alice.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash;
            alice.HashAlgorithm = CngAlgorithm.Sha256;
            alicePublicKey = alice.PublicKey.ToByteArray();
            Bob bob = new Bob();
            CngKey k = CngKey.Import(bob.bobPublicKey, CngKeyBlobFormat.EccPublicBlob);
            byte[] aliceKey = alice.DeriveKeyMaterial(CngKey.Import(bob.bobPublicKey, CngKeyBlobFormat.EccPublicBlob));
            byte[] encryptedMessage = null;
            byte[] iv = null;
            Send(aliceKey, "Secret message", out encryptedMessage, out iv);
            bob.Receive(encryptedMessage, iv);
        }

    }

    private static void Send(byte[] key, string secretMessage, out byte[] encryptedMessage, out byte[] iv)
    {
        using (Aes aes = new AesCryptoServiceProvider())
        {
            aes.Key = key;
            iv = aes.IV;

            // Encrypt the message
            using (MemoryStream ciphertext = new MemoryStream())
            using (CryptoStream cs = new CryptoStream(ciphertext, aes.CreateEncryptor(), CryptoStreamMode.Write))
            {
                byte[] plaintextMessage = Encoding.UTF8.GetBytes(secretMessage);
                cs.Write(plaintextMessage, 0, plaintextMessage.Length);
                cs.Close();
                encryptedMessage = ciphertext.ToArray();
            }
        }
    }

}
public class Bob 
{
    public byte[] bobPublicKey;
    private byte[] bobKey;
    public Bob()
    {
        using (ECDiffieHellmanCng bob = new ECDiffieHellmanCng())
        {

            bob.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash;
            bob.HashAlgorithm = CngAlgorithm.Sha256;
            bobPublicKey = bob.PublicKey.ToByteArray();
            bobKey = bob.DeriveKeyMaterial(CngKey.Import(Alice.alicePublicKey, CngKeyBlobFormat.EccPublicBlob));

        }
    }

    public void Receive(byte[] encryptedMessage, byte[] iv)
    {

        using (Aes aes = new AesCryptoServiceProvider())
        {
            aes.Key = bobKey;
            aes.IV = iv;
            // Decrypt the message
            using (MemoryStream plaintext = new MemoryStream())
            {
                using (CryptoStream cs = new CryptoStream(plaintext, aes.CreateDecryptor(), CryptoStreamMode.Write))
                {
                    cs.Write(encryptedMessage, 0, encryptedMessage.Length);
                    cs.Close();
                    string message = Encoding.UTF8.GetString(plaintext.ToArray());
                    Console.WriteLine(message);
                }
            }
        }
    }

}
Imports System.IO
Imports System.Security.Cryptography
Imports System.Text




Class Alice
    Public Shared alicePublicKey() As Byte


    Public Shared Sub Main(ByVal args() As String)
        Using alice As New ECDiffieHellmanCng()
            alice.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash
            alice.HashAlgorithm = CngAlgorithm.Sha256
            alicePublicKey = alice.PublicKey.ToByteArray()
            Dim bob As New Bob()
            Dim k As CngKey = CngKey.Import(bob.bobPublicKey, CngKeyBlobFormat.EccPublicBlob)
            Dim aliceKey As Byte() = alice.DeriveKeyMaterial(CngKey.Import(bob.bobPublicKey, CngKeyBlobFormat.EccPublicBlob))
            Dim encryptedMessage As Byte() = Nothing
            Dim iv As Byte() = Nothing
            Send(aliceKey, "Secret message", encryptedMessage, iv)
            bob.Receive(encryptedMessage, iv)
        End Using
    End Sub


    Private Shared Sub Send(ByVal key() As Byte, ByVal secretMessage As String, ByRef encryptedMessage() As Byte, ByRef iv() As Byte)
        Using aes As New AesCryptoServiceProvider()
            aes.Key = key
            iv = aes.IV

            ' Encrypt the message
            Using ciphertext As New MemoryStream()
                Using cs As New CryptoStream(ciphertext, aes.CreateEncryptor(), CryptoStreamMode.Write)
                    Dim plaintextMessage As Byte() = Encoding.UTF8.GetBytes(secretMessage)
                    cs.Write(plaintextMessage, 0, plaintextMessage.Length)
                    cs.Close()
                    encryptedMessage = ciphertext.ToArray()
                End Using
            End Using
        End Using

    End Sub
End Class

Public Class Bob
    Public bobPublicKey() As Byte
    Private bobKey() As Byte

    Public Sub New()
        Using bob As New ECDiffieHellmanCng()

            bob.KeyDerivationFunction = ECDiffieHellmanKeyDerivationFunction.Hash
            bob.HashAlgorithm = CngAlgorithm.Sha256
            bobPublicKey = bob.PublicKey.ToByteArray()
            bobKey = bob.DeriveKeyMaterial(CngKey.Import(Alice.alicePublicKey, CngKeyBlobFormat.EccPublicBlob))
        End Using

    End Sub


    Public Sub Receive(ByVal encryptedMessage() As Byte, ByVal iv() As Byte)

        Using aes As New AesCryptoServiceProvider()
                aes.Key = bobKey
                aes.IV = iv
                ' Decrypt the message
            Using plaintext As New MemoryStream()
                Using cs As New CryptoStream(plaintext, aes.CreateDecryptor(), CryptoStreamMode.Write)
                    cs.Write(encryptedMessage, 0, encryptedMessage.Length)
                    cs.Close()
                    Dim message As String = Encoding.UTF8.GetString(plaintext.ToArray())
                    Console.WriteLine(message)
                End Using
            End Using
        End Using
    End Sub
End Class

Комментарии

ECDiffieHellmanCng Класс позволяет двум сторонам обмениваться материалами закрытого ключа, даже если они обмениваются данными через открытый канал.The ECDiffieHellmanCng class enables two parties to exchange private key material even if they are communicating through a public channel. Обе стороны могут вычислить одно и то же значение секрета, которое ** называется секретным соглашением в управляемых классах Диффи-Хелмана.Both parties can calculate the same secret value, which is referred to as the secret agreement in the managed Diffie-Hellman classes. Секретное соглашение затем можно использовать для различных целей, включая в качестве симметричного ключа.The secret agreement can then be used for a variety of purposes, including as a symmetric key. Однако вместо прямого ECDiffieHellmanCng предоставления секретного соглашения класс выполняет некоторую пошаговую обработку соглашения перед предоставлением значения.However, instead of exposing the secret agreement directly, the ECDiffieHellmanCng class does some post-processing on the agreement before providing the value. Эта пост-обработка называется функцией формирования ключа (подпрограмм). можно выбрать, какой ПОДПРОГРАММ вы хотите использовать, и задать его параметры с помощью набора свойств в экземпляре объекта Диффи-Хелмана.This post processing is referred to as the key derivation function (KDF); you can select which KDF you want to use and set its parameters through a set of properties on the instance of the Diffie-Hellman object.

Функция формирования ключаKey derivation function СвойстваProperties
Hash HashAlgorithm— Хэш-алгоритм, используемый для обработки секретного соглашения.HashAlgorithm - The hash algorithm that is used to process the secret agreement.

SecretPrepend— Дополнительный массив байтов для добавления в начало секретного соглашения перед его хэшированием.SecretPrepend - An optional byte array to prepend to the secret agreement before hashing it.

SecretAppend— Дополнительный массив байтов для добавления к секретному соглашению перед его хэшированием.SecretAppend - An optional byte array to append to the secret agreement before hashing it.
Hmac HashAlgorithm— Хэш-алгоритм, используемый для обработки секретного соглашения.HashAlgorithm - The hash algorithm that is used to process the secret agreement.

SecretPrepend— Дополнительный массив байтов для добавления в начало секретного соглашения перед его хэшированием.SecretPrepend- An optional byte array to prepend to the secret agreement before hashing it.

SecretAppend— Дополнительный массив байтов для добавления к секретному соглашению перед его хэшированием.SecretAppend - An optional byte array to append to the secret agreement before hashing it.
Tls Label— Метка для формирования ключа.Label - The label for key derivation.

Seed— Начальное значение для формирования ключа.Seed - The seed for key derivation.

Результатом передачи секретного соглашения через функцию формирования ключа является массив байтов, который может использоваться в качестве ключевого материала для вашего приложения.The result of passing the secret agreement through the key derivation function is a byte array that may be used as key material for your application. Число байтов создаваемого ключевого материала зависит от функции формирования ключа. Например, SHA-256 будет создавать 256 бит материала ключа, тогда как SHA-512 создаст 512 бита материала ключа. Основной поток обмена ключами ECDH выглядит следующим образом:The number of bytes of key material generated is dependent on the key derivation function; for example, SHA-256 will generate 256 bits of key material, whereas SHA-512 will generate 512 bits of key material.The basic flow of an ECDH key exchange is as follows:

  1. Алиса и Боб создают пару ключей, которая будет использоваться для операции обмена ключами Диффи-Хелмана.Alice and Bob create a key pair to use for the Diffie-Hellman key exchange operation

  2. Алиса и Боб настраивают ПОДПРОГРАММ, используя параметры, которые согласны с ними.Alice and Bob configure the KDF using parameters the agree on.

  3. Алиса отправляет Бобу свой открытый ключ.Alice sends Bob her public key.

  4. Боб отправляет Бобу свой открытый ключ.Bob sends Alice his public key.

  5. Алиса и Боб используют открытые ключи друг друга для создания секретного соглашения и применяют ПОДПРОГРАММ к секретному соглашению для создания материала ключа.Alice and Bob use each other's public keys to generate the secret agreement, and apply the KDF to the secret agreement to generate key material.

Конструкторы

ECDiffieHellmanCng()

Инициализирует новый экземпляр класса ECDiffieHellmanCng с парой случайных пар ключей.Initializes a new instance of the ECDiffieHellmanCng class with a random key pair.

ECDiffieHellmanCng(CngKey)

Инициализирует новый экземпляр класса ECDiffieHellmanCng, используя указанный объект CngKey.Initializes a new instance of the ECDiffieHellmanCng class by using the specified CngKey object.

ECDiffieHellmanCng(ECCurve)

Создает новый экземпляр класса ECDiffieHellmanCng, пара открытого и закрытого ключей которого создается на основе указанной кривой.Creates a new instance of the ECDiffieHellmanCng class whose public/private key pair is generated over the specified curve.

ECDiffieHellmanCng(Int32)

Инициализирует новый экземпляр класса ECDiffieHellmanCng с созданной случайным образом парой ключей указанного размера.Initializes a new instance of the ECDiffieHellmanCng class with a random key pair, using the specified key size.

Поля

KeySizeValue

Представляет размер модуля ключа (в битах), используемого алгоритмом асимметричного шифрования.Represents the size, in bits, of the key modulus used by the asymmetric algorithm.

(Унаследовано от AsymmetricAlgorithm)
LegalKeySizesValue

Задает размеры ключа, которые поддерживаются алгоритмом асимметричного шифрования.Specifies the key sizes that are supported by the asymmetric algorithm.

(Унаследовано от AsymmetricAlgorithm)

Свойства

HashAlgorithm

Получает или задает хэш-алгоритм, используемый при генерации ключевого материала.Gets or sets the hash algorithm to use when generating key material.

HmacKey

Получает или задает ключ HMAC, используемый при формировании ключевого материала.Gets or sets the Hash-based Message Authentication Code (HMAC) key to use when deriving key material.

Key

Задает объект CngKey, который будет использоваться текущим объектом для выполнения криптографических операций.Specifies the CngKey that is used by the current object for cryptographic operations.

KeyDerivationFunction

Получает или задает функцию формирования ключа для класса ECDiffieHellmanCng.Gets or sets the key derivation function for the ECDiffieHellmanCng class.

KeyExchangeAlgorithm

Получает имя алгоритма обмена ключами.Gets the name of the key exchange algorithm.

(Унаследовано от ECDiffieHellman)
KeySize
Label

Получает или задает значение метки, используемое для формирования ключа.Gets or sets the label value that is used for key derivation.

LegalKeySizes
PublicKey

Получает открытый ключ, который может использоваться другим объектом ECDiffieHellmanCng для генерации секретного соглашения.Gets the public key that can be used by another ECDiffieHellmanCng object to generate a shared secret agreement.

SecretAppend

Получает или задает значение, добавляемое к концу секретного соглашения при генерации ключевого материала.Gets or sets a value that will be appended to the secret agreement when generating key material.

SecretPrepend

Получает или задает значение, добавляемое к началу секретного соглашения при формировании ключевого материала.Gets or sets a value that will be added to the beginning of the secret agreement when deriving key material.

Seed

Получает или задает начальное значение, используемое при формировании ключевого материала.Gets or sets the seed value that will be used when deriving key material.

SignatureAlgorithm

Получает имя алгоритма подписи.Gets the name of the signature algorithm.

(Унаследовано от ECDiffieHellman)
UseSecretAgreementAsHmacKey

Получает значение, которое определяет, используется ли секретное соглашение в качестве ключа HMAC для формирования ключевого материала.Gets a value that indicates whether the secret agreement is used as a Hash-based Message Authentication Code (HMAC) key to derive key material.

Методы

Clear()

Освобождает все ресурсы, используемые классом AsymmetricAlgorithm.Releases all resources used by the AsymmetricAlgorithm class.

(Унаследовано от AsymmetricAlgorithm)
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName)

Извлекает с помощью хэш-функции байты, которые можно использовать в качестве ключа, учитывая открытый ключ другой стороны и имя хэш-алгоритма.Derives bytes that can be used as a key using a hash function, given another party's public key and hash algorithm's name.

(Унаследовано от ECDiffieHellman)
DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[])

Извлекает с помощью хэш-функции байты, которые можно использовать в качестве ключа, учитывая открытый ключ другой стороны, имя хэш-алгоритма и добавленное значение (в начало и конец).Derives bytes that can be used as a key using a hash function, given another party's public key, hash algorithm's name, a prepend value and an append value.

DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[])

Получает последовательность байтов, которые можно использовать в качестве ключа, использующего код проверки подлинности хэш-сообщения (HMAC).Derives bytes that can be used as a key using a Hash-based Message Authentication Code (HMAC).

(Унаследовано от ECDiffieHellman)
DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[])

Получает последовательность байтов, которые можно использовать в качестве ключа, использующего код проверки подлинности хэш-сообщения (HMAC).Derives bytes that can be used as a key using a Hash-based Message Authentication Code (HMAC).

DeriveKeyMaterial(CngKey)

Формирует ключевой материал из секретного соглашения, заключенного между двумя сторонами, используя заданный объект CngKey, в котором содержится открытый ключ второй стороны.Derives the key material that is generated from the secret agreement between two parties, given a CngKey object that contains the second party's public key.

DeriveKeyMaterial(ECDiffieHellmanPublicKey)

Формирует ключевой материал из секретного соглашения, заключенного между двумя сторонами, используя заданный объект ECDiffieHellmanPublicKey, в котором содержится открытый ключ второй стороны.Derives the key material that is generated from the secret agreement between two parties, given an ECDiffieHellmanPublicKey object that contains the second party's public key.

DeriveKeyTls(ECDiffieHellmanPublicKey, Byte[], Byte[])

Извлекает байты, которые могут использоваться как ключ с использованием алгоритма получения псевдослучайной функции (PRF) протокола TLS.Derives bytes that can be used as a key using a Transport Layer Security (TLS) Pseudo-Random Function (PRF) derivation algorithm.

DeriveSecretAgreementHandle(CngKey)

Получает дескриптор секретного соглашения, заключенного между двумя сторонами, используя заданный объект CngKey, в котором содержится открытый ключ второй стороны.Gets a handle to the secret agreement generated between two parties, given a CngKey object that contains the second party's public key.

DeriveSecretAgreementHandle(ECDiffieHellmanPublicKey)

Получает дескриптор секретного соглашения, согласованного между двумя сторонами, используя заданный объект ECDiffieHellmanPublicKey, в котором содержится открытый ключ второй стороны.Gets a handle to the secret agreement generated between two parties, given an ECDiffieHellmanPublicKey object that contains the second party's public key.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса AsymmetricAlgorithm.Releases all resources used by the current instance of the AsymmetricAlgorithm class.

(Унаследовано от AsymmetricAlgorithm)
Dispose(Boolean)

Освобождает неуправляемые ресурсы, используемые классом AsymmetricAlgorithm (при необходимости освобождает и управляемые ресурсы).Releases the unmanaged resources used by the AsymmetricAlgorithm class and optionally releases the managed resources.

(Унаследовано от AsymmetricAlgorithm)
Equals(Object)

Определяет, равен ли заданный объект текущему объекту.Determines whether the specified object is equal to the current object.

(Унаследовано от Object)
ExportECPrivateKey()

Экспортирует текущий ключ в формате ECPrivateKey.Exports the current key in the ECPrivateKey format.

(Унаследовано от ECDiffieHellman)
ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters)

Экспортирует текущий ключ в формате PKCS #8 EncryptedPrivateKeyInfo с паролем, основанным на байтах.Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a byte-based password.

(Унаследовано от AsymmetricAlgorithm)
ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters)

Экспортирует текущий ключ в формате PKCS #8 EncryptedPrivateKeyInfo с паролем, основанным на символах.Exports the current key in the PKCS#8 EncryptedPrivateKeyInfo format with a char-based password.

(Унаследовано от AsymmetricAlgorithm)
ExportExplicitParameters(Boolean)

Экспортирует ключ и параметры явной кривой, используемые объектом ECCurve, в объект ECParameters.Exports the key and explicit curve parameters used by the ECCurve object into an ECParameters object.

ExportParameters(Boolean)

Экспортирует ключ, используемый объектом ECCurve, в объект ECParameters.Exports the key used by the ECCurve object into an ECParameters object.

ExportPkcs8PrivateKey()

Экспортирует текущий ключ в формате PKCS#8 PrivateKeyInfo.Exports the current key in the PKCS#8 PrivateKeyInfo format.

(Унаследовано от AsymmetricAlgorithm)
ExportSubjectPublicKeyInfo()

Экспортирует открытую часть текущего ключа в формате X.509 SubjectPublicKeyInfo.Exports the public-key portion of the current key in the X.509 SubjectPublicKeyInfo format.

(Унаследовано от AsymmetricAlgorithm)
FromXmlString(String)

Этот метод не реализован.This method is not implemented.

FromXmlString(String, ECKeyXmlFormat)

Выполняет десериализацию данных ключа из XML-строки, используя указанный формат.Deserializes the key information from an XML string by using the specified format.

GenerateKey(ECCurve)

Создает новую пару открытого и закрытого эфемерных ключей для указанной кривой.Generates a new ephemeral public/private key pair for the specified curve.

GetHashCode()

Служит хэш-функцией по умолчанию.Serves as the default hash function.

(Унаследовано от Object)
GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
ImportECPrivateKey(ReadOnlySpan<Byte>, Int32)

Импортирует пару открытого и закрытого ключей из структуры ECPrivateKey и заменяет ключи для этого объекта.Imports the public/private keypair from an ECPrivateKey structure, replacing the keys for this object.

(Унаследовано от ECDiffieHellman)
ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Int32)

Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 EncryptedPrivateKeyInfo после расшифровки с помощью пароля на основе байтов, заменяя ключи для этого объекта.Imports the public/private keypair from a PKCS#8 EncryptedPrivateKeyInfo structure after decrypting with a byte-based password, replacing the keys for this object.

(Унаследовано от ECDiffieHellman)
ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, ReadOnlySpan<Byte>, Int32)

Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 EncryptedPrivateKeyInfo после расшифровки с помощью пароля на основе символов, заменяя ключи для этого объекта.Imports the public/private keypair from a PKCS#8 EncryptedPrivateKeyInfo structure after decrypting with a char-based password, replacing the keys for this object.

(Унаследовано от ECDiffieHellman)
ImportParameters(ECParameters)

Импортирует заданные параметры для объекта ECCurve как ключ в текущий экземпляр.Imports the specified parameters for an ECCurve object as a key into the current instance.

ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32)

Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 PrivateKeyInfo после расшифровки, заменяя ключи для этого объекта.Imports the public/private keypair from a PKCS#8 PrivateKeyInfo structure after decryption, replacing the keys for this object.

(Унаследовано от ECDiffieHellman)
ImportSubjectPublicKeyInfo(ReadOnlySpan<Byte>, Int32)

Импортирует открытый ключ из структуры X.509 SubjectPublicKeyInfo после расшифровки, заменяя ключи для этого объекта.Imports the public key from an X.509 SubjectPublicKeyInfo structure after decryption, replacing the keys for this object.

(Унаследовано от ECDiffieHellman)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.Returns a string that represents the current object.

(Унаследовано от Object)
ToXmlString(Boolean)

Этот метод не реализован.This method is not implemented.

ToXmlString(ECKeyXmlFormat)

Выполняет сериализацию данных ключа в XML-строку, используя указанный формат.Serializes the key information to an XML string by using the specified format.

TryExportECPrivateKey(Span<Byte>, Int32)

Пытается экспортировать текущий ключ в формате ECPrivateKey в предоставленный буфер.Attempts to export the current key in the ECPrivateKey format into a provided buffer.

(Унаследовано от ECDiffieHellman)
TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters, Span<Byte>, Int32)

Пытается экспортировать текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo в предоставленный буфер с использованием пароля на основе байтов.Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer, using a byte-based password.

(Унаследовано от ECDiffieHellman)
TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters, Span<Byte>, Int32)

Пытается экспортировать текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo в предоставленный буфер с использованием пароля на основе символов.Attempts to export the current key in the PKCS#8 EncryptedPrivateKeyInfo format into a provided buffer, using a char-based password.

(Унаследовано от ECDiffieHellman)
TryExportPkcs8PrivateKey(Span<Byte>, Int32)

Пытается экспортировать текущий ключ в формате PKCS#8 PrivateKeyInfo в предоставленный буфер.Attempts to export the current key in the PKCS#8 PrivateKeyInfo format into a provided buffer.

(Унаследовано от ECDiffieHellman)
TryExportSubjectPublicKeyInfo(Span<Byte>, Int32)

Пытается экспортировать текущий ключ в формате X.509 SubjectPublicKeyInfo в предоставленный буфер.Attempts to export the current key in the X.509 SubjectPublicKeyInfo format into a provided buffer.

(Унаследовано от ECDiffieHellman)

Явные реализации интерфейса

IDisposable.Dispose()

Описание этого члена см. в разделе Dispose().For a description of this member, see Dispose().

(Унаследовано от AsymmetricAlgorithm)

Применяется к