Поделиться через


ECDiffieHellmanCng Класс

Определение

Предоставляет реализацию CNG алгоритма Диффи-Хеллмана на эллиптических кривых (ECDH). Этот класс используется для выполнения криптографических операций.

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 класс для установления обмена ключами и как использовать этот ключ для шифрования сообщения, которое может быть отправлено по общедоступному каналу и расшифровано получателем.

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 bobKey = CngKey.Import(bob.bobPublicKey, CngKeyBlobFormat.EccPublicBlob);
            byte[] aliceKey = alice.DeriveKeyMaterial(bobKey);
            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 позволяет двум сторонам обмениваться материалами закрытого ключа, даже если они обмениваются данными через открытый канал. Обе стороны могут вычислить одно и то же значение секрета, которое в управляемых классах Diffie-Hellman называется соглашением о секретах . Затем секретное соглашение можно использовать для различных целей, в том числе в качестве симметричного ключа. Однако вместо предоставления секретного соглашения напрямую ECDiffieHellmanCng класс выполняет некоторую постобработку соглашения перед предоставлением значения. Эта постобработка называется функцией формирования ключа (KDF); Вы можете выбрать, какой KDF вы хотите использовать, и задать его параметры с помощью набора свойств экземпляра объекта Diffie-Hellman.

Функция наследования ключа Свойства
Hash HashAlgorithm — хэш-алгоритм, используемый для обработки секретного соглашения.

SecretPrepend — необязательный массив байтов, который добавляется к секретному соглашению перед его хэшированием.

SecretAppend — необязательный массив байтов, добавляемый к секретному соглашению перед его хэшированием.
Hmac HashAlgorithm — хэш-алгоритм, используемый для обработки секретного соглашения.

SecretPrepend— необязательный массив байтов, который добавляется к секретному соглашению перед его хэшированием.

SecretAppend — необязательный массив байтов, добавляемый к секретному соглашению перед его хэшированием.
Tls Label — метка для производного ключа.

Seed — начальное значение для производного ключа.

Результатом передачи секретного соглашения через функцию наследования ключа является массив байтов, который может использоваться в качестве материала ключа для вашего приложения. Количество байтов созданного материала ключа зависит от функции формирования ключа; Например, SHA-256 создаст 256 битов материала ключа, а SHA-512 — 512 битов материала ключа. Основной поток обмена ключами ECDH выглядит следующим образом:

  1. Алиса и Боб создают пару ключей для Diffie-Hellman операции обмена ключами.

  2. Алиса и Боб настраивают KDF с помощью параметров, для согласования.

  3. Алиса отправляет Бобу свой открытый ключ.

  4. Боб отправляет Алисе свой открытый ключ.

  5. Алиса и Боб используют открытые ключи друг друга для создания секретного соглашения и применяют KDF к секретному соглашению для создания материала ключа.

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

ECDiffieHellmanCng()

Инициализирует новый экземпляр класса ECDiffieHellmanCng с парой случайных пар ключей.

ECDiffieHellmanCng(CngKey)

Инициализирует новый экземпляр класса ECDiffieHellmanCng, используя указанный объект CngKey.

ECDiffieHellmanCng(ECCurve)

Создает новый экземпляр класса ECDiffieHellmanCng, пара открытого и закрытого ключей которого создается на основе указанной кривой.

ECDiffieHellmanCng(Int32)

Инициализирует новый экземпляр класса ECDiffieHellmanCng с созданной случайным образом парой ключей указанного размера.

Поля

KeySizeValue

Представляет размер модуля ключа (в битах), используемого алгоритмом асимметричного шифрования.

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

Задает размеры ключа, которые поддерживаются алгоритмом асимметричного шифрования.

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

Свойства

HashAlgorithm

Получает или задает хэш-алгоритм, используемый при генерации ключевого материала.

HmacKey

Получает или задает ключ HMAC, используемый при формировании ключевого материала.

Key

Задает объект CngKey, который будет использоваться текущим объектом для выполнения криптографических операций.

KeyDerivationFunction

Получает или задает функцию формирования ключа для класса ECDiffieHellmanCng.

KeyExchangeAlgorithm

Получает имя алгоритма обмена ключами.

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

Получает или задает размер модуля ключа (в битах), используемого алгоритмом асимметричного шифрования.

KeySize

Получает или задает размер модуля ключа (в битах), используемого алгоритмом асимметричного шифрования.

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

Получает или задает значение метки, используемое для формирования ключа.

LegalKeySizes

Возвращает размеры ключа, которые поддерживаются алгоритмом асимметричного шифрования.

LegalKeySizes

Возвращает размеры ключа, которые поддерживаются алгоритмом асимметричного шифрования.

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

Получает открытый ключ, который может использоваться другим объектом ECDiffieHellmanCng для генерации секретного соглашения.

SecretAppend

Получает или задает значение, добавляемое к концу секретного соглашения при генерации ключевого материала.

SecretPrepend

Получает или задает значение, добавляемое к началу секретного соглашения при формировании ключевого материала.

Seed

Получает или задает начальное значение, используемое при формировании ключевого материала.

SignatureAlgorithm

Получает имя алгоритма подписи.

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

Получает значение, которое определяет, используется ли секретное соглашение в качестве ключа HMAC для формирования ключевого материала.

Методы

Clear()

Освобождает все ресурсы, используемые классом AsymmetricAlgorithm.

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

Выполняет формирование ключа с использованием указанного хэш-алгоритма.

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

Выполняет формирование ключа с использованием указанного хэш-алгоритма с дополнительными данными, добавленными в начале или конце.

DeriveKeyFromHash(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[])

При реализации в производном классе выполняет формирование ключа с использованием указанного хэш-алгоритма с дополнительными данными, добавленными в начале или конце.

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

Выполняет формирование ключа с использованием указанного алгоритма HMAC.

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

Выполняет формирование ключа с использованием указанного алгоритма HMAC с дополнительными данными, добавленными в начале или конце.

DeriveKeyFromHmac(ECDiffieHellmanPublicKey, HashAlgorithmName, Byte[], Byte[], Byte[])

При реализации в производном классе выполняет формирование ключа с использованием указанного алгоритма HMAC с дополнительными данными, добавленными в начале или конце.

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

Формирует ключевой материал из секретного соглашения, заключенного между двумя сторонами, используя заданный объект CngKey, в котором содержится открытый ключ второй стороны.

DeriveKeyMaterial(ECDiffieHellmanPublicKey)

Формирует ключевой материал из секретного соглашения, заключенного между двумя сторонами, используя заданный объект ECDiffieHellmanPublicKey, в котором содержится открытый ключ второй стороны.

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

Выполняет формирование ключа с использованием псевдослучайной функции (PRF) протокола TLS 1.1.

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

При реализации в производном классе выполняет формирование ключа с использованием псевдослучайной функции (PRF) протокола TLS 1.1.

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

Получение исходного материала ключа.

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

Получает дескриптор секретного соглашения, заключенного между двумя сторонами, используя заданный объект CngKey, в котором содержится открытый ключ второй стороны.

DeriveSecretAgreementHandle(ECDiffieHellmanPublicKey)

Получает дескриптор секретного соглашения, согласованного между двумя сторонами, используя заданный объект ECDiffieHellmanPublicKey, в котором содержится открытый ключ второй стороны.

Dispose()

Освобождает все ресурсы, используемые текущим экземпляром класса AsymmetricAlgorithm.

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

Освобождает неуправляемые ресурсы, используемые классом AsymmetricAlgorithm (при необходимости освобождает и управляемые ресурсы).

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

Определяет, равен ли указанный объект текущему объекту.

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

Экспортирует текущий ключ в формате ECPrivateKey.

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

Экспортирует текущий ключ в формате ECPrivateKey в кодировке PEM.

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

Экспортирует текущий ключ в формате PKCS #8 EncryptedPrivateKeyInfo с паролем, основанным на байтах.

ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters)

Экспортирует текущий ключ в формате PKCS #8 EncryptedPrivateKeyInfo с паролем, основанным на байтах.

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

Экспортирует текущий ключ в формате PKCS #8 EncryptedPrivateKeyInfo с паролем, основанным на символах.

ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters)

Экспортирует текущий ключ в формате PKCS #8 EncryptedPrivateKeyInfo с паролем, основанным на символах.

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

Экспортирует текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo с паролем на основе байтов в кодировке PEM.

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

Экспортирует текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo с паролем на основе символов в кодировке PEM.

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

Экспортирует ключ и параметры явной кривой, используемые объектом ECCurve, в объект ECParameters.

ExportExplicitParameters(Boolean)

При переопределении в производном классе экспортирует сведения об открытом или открытом и закрытом ключе, используя формат явной кривой в работающем разделе ECDiffieHellman в структуру ECParameters таким образом, чтобы их можно было передать в метод ImportParameters(ECParameters).

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

Экспортирует ключ, используемый объектом ECCurve, в объект ECParameters.

ExportParameters(Boolean)

При переопределении в производном классе экспортирует сведения об открытом или открытом и закрытом ключе из рабочего раздела ECDiffieHellman в структуру ECParameters таким образом, чтобы их можно было передать в метод ImportParameters(ECParameters).

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

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

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

Экспортирует текущий ключ в формате PKCS#8 PrivateKeyInfo в кодировке PEM.

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

Экспортирует открытую часть текущего ключа в формате X.509 SubjectPublicKeyInfo.

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

Экспортирует часть текущего ключа с открытым ключом в формате X.509 SubjectPublicKeyInfo в кодировке PEM.

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

Этот метод не реализован.

FromXmlString(String)

Этот метод выдает исключение во всех случаях.

(Унаследовано от ECDiffieHellman)
FromXmlString(String, ECKeyXmlFormat)
Устаревшие..

Выполняет десериализацию данных ключа из XML-строки, используя указанный формат.

GenerateKey(ECCurve)

Создает новую пару открытого и закрытого эфемерных ключей для указанной кривой.

GenerateKey(ECCurve)

При переопределении в производном классе создает новую пару открытого и закрытого эфемерных ключей для указанной кривой.

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

Служит хэш-функцией по умолчанию.

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

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

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

Импортирует пару открытого и закрытого ключей из структуры ECPrivateKey и заменяет ключи для этого объекта.

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

Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 EncryptedPrivateKeyInfo после расшифровки с помощью пароля на основе байтов, заменяя ключи для этого объекта.

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

Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 EncryptedPrivateKeyInfo после расшифровки с помощью пароля на основе байтов, заменяя ключи для этого объекта.

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

Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 EncryptedPrivateKeyInfo после расшифровки с помощью пароля на основе символов, заменяя ключи для этого объекта.

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

Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 EncryptedPrivateKeyInfo после расшифровки с помощью пароля на основе символов, заменяя ключи для этого объекта.

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

Импортирует зашифрованный закрытый ключ в формате RFC 7468 в кодировке PEM, заменяя ключи для этого объекта.

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

Импортирует зашифрованный закрытый ключ в формате RFC 7468 в кодировке PEM, заменяя ключи для этого объекта.

(Унаследовано от ECDiffieHellman)
ImportFromPem(ReadOnlySpan<Char>)

Импортирует зашифрованный ключ в формате RFC 7468 в кодировке PEM, заменив ключи для этого объекта.

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

Импортирует заданные параметры для объекта ECCurve как ключ в текущий экземпляр.

ImportParameters(ECParameters)

При переопределении в производном классе импортирует заданные параметры для ECCurve как эфемерный ключ в текущий объект ECDiffieHellman.

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

Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 PrivateKeyInfo после расшифровки, заменяя ключи для этого объекта.

ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32)

Импортирует пару из открытого и закрытого ключей из структуры PKCS#8 PrivateKeyInfo после расшифровки, заменяя ключи для этого объекта.

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

Импортирует открытый ключ из структуры X.509 SubjectPublicKeyInfo после расшифровки, заменяя ключи для этого объекта.

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

Создает неполную копию текущего объекта Object.

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

Возвращает строку, представляющую текущий объект.

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

Этот метод не реализован.

ToXmlString(Boolean)

Этот метод выдает исключение во всех случаях.

(Унаследовано от ECDiffieHellman)
ToXmlString(ECKeyXmlFormat)
Устаревшие..

Выполняет сериализацию данных ключа в XML-строку, используя указанный формат.

TryExportECPrivateKey(Span<Byte>, Int32)

Пытается экспортировать текущий ключ в формате ECPrivateKey в предоставленный буфер.

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

Пытается экспортировать текущий ключ в формате ECPrivateKey с кодировкой PEM в предоставленный буфер.

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

Пытается экспортировать текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo в предоставленный буфер с использованием пароля на основе байтов.

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

Пытается экспортировать текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo в предоставленный буфер с использованием пароля на основе байтов.

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

Пытается экспортировать текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo в предоставленный буфер с использованием пароля на основе символов.

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

Пытается экспортировать текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo в предоставленный буфер с использованием пароля на основе символов.

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

Пытается экспортировать текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo с паролем на основе байтов в кодировке PEM.

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

Экспортирует текущий ключ в формате PKCS#8 EncryptedPrivateKeyInfo с паролем на основе символов в кодировке PEM.

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

Пытается экспортировать текущий ключ в формате PKCS#8 PrivateKeyInfo в предоставленный буфер.

TryExportPkcs8PrivateKey(Span<Byte>, Int32)

Пытается экспортировать текущий ключ в формате PKCS#8 PrivateKeyInfo в предоставленный буфер.

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

Пытается экспортировать текущий ключ в формате PKCS#8 PrivateKeyInfo с кодировкой PEM в предоставленный буфер.

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

Пытается экспортировать текущий ключ в формате X.509 SubjectPublicKeyInfo в предоставленный буфер.

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

Пытается экспортировать текущий ключ в формате X.509 SubjectPublicKeyInfo в кодировке PEM в предоставленный буфер.

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

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

IDisposable.Dispose()

Этот API поддерживает инфраструктуру продукта и не предназначен для использования непосредственно из программного кода.

Описание этого члена см. в разделе Dispose().

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

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