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


RSAPKCS1KeyExchangeFormatter.CreateKeyExchange Метод

Определение

Создает зашифрованные данные обмена ключами.

Перегрузки

CreateKeyExchange(Byte[])

Создает из указанных входных данных зашифрованные данные для обмена ключами.

CreateKeyExchange(Byte[], Type)

Создает из указанных входных данных зашифрованные данные для обмена ключами.

CreateKeyExchange(Byte[])

Исходный код:
RSAPKCS1KeyExchangeFormatter.cs
Исходный код:
RSAPKCS1KeyExchangeFormatter.cs
Исходный код:
RSAPKCS1KeyExchangeFormatter.cs

Создает из указанных входных данных зашифрованные данные для обмена ключами.

public:
 override cli::array <System::Byte> ^ CreateKeyExchange(cli::array <System::Byte> ^ rgbData);
public override byte[] CreateKeyExchange (byte[] rgbData);
override this.CreateKeyExchange : byte[] -> byte[]
Public Overrides Function CreateKeyExchange (rgbData As Byte()) As Byte()

Параметры

rgbData
Byte[]

Секретные сведения, которые будут переданы при обмене ключами.

Возвращаемое значение

Byte[]

Зашифрованные данные обмена ключами для отправки предполагаемому получателю.

Исключения

Объект rgbData имеет слишком большой размер.

Комментарии

Эти данные могут интерпретироваться только владельцем закрытого ключа, соответствующего открытому ключу, используемому для шифрования данных. Это помогает гарантировать, что доступ к секретным сведениям может получить только предполагаемый получатель.

См. также раздел

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

CreateKeyExchange(Byte[], Type)

Исходный код:
RSAPKCS1KeyExchangeFormatter.cs
Исходный код:
RSAPKCS1KeyExchangeFormatter.cs
Исходный код:
RSAPKCS1KeyExchangeFormatter.cs

Создает из указанных входных данных зашифрованные данные для обмена ключами.

public:
 override cli::array <System::Byte> ^ CreateKeyExchange(cli::array <System::Byte> ^ rgbData, Type ^ symAlgType);
public override byte[] CreateKeyExchange (byte[] rgbData, Type? symAlgType);
public override byte[] CreateKeyExchange (byte[] rgbData, Type symAlgType);
override this.CreateKeyExchange : byte[] * Type -> byte[]
Public Overrides Function CreateKeyExchange (rgbData As Byte(), symAlgType As Type) As Byte()

Параметры

rgbData
Byte[]

Секретные сведения, которые будут переданы при обмене ключами.

symAlgType
Type

Этот параметр не используется в текущей версии.

Возвращаемое значение

Byte[]

Зашифрованные данные обмена ключами для отправки предполагаемому получателю.

Примеры

В следующем примере показано, как использовать RSAPKCS1KeyExchangeFormatter.CreateKeyExchange метод для создания ключа обмена для получателя сообщения. Этот пример входит в состав более крупного примера использования класса RSAPKCS1KeyExchangeFormatter.

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

        // Encrypt the session key
        RSAPKCS1KeyExchangeFormatter keyFormatter = new RSAPKCS1KeyExchangeFormatter(key);
        encryptedSessionKey = keyFormatter.CreateKeyExchange(aes.Key, typeof(Aes));

        // 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();
        }
    }
}
Private Shared Sub Send(ByVal key As RSA, ByVal secretMessage As String, ByRef iv() As Byte, ByRef encryptedSessionKey() As Byte, ByRef encryptedMessage() As Byte)
    Dim aes = New AesCryptoServiceProvider()
    Try
        iv = aes.IV

        ' Encrypt the session key
        Dim keyFormatter As New RSAPKCS1KeyExchangeFormatter(key)
        encryptedSessionKey = keyFormatter.CreateKeyExchange(aes.Key, GetType(Aes))

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

                encryptedMessage = ciphertext.ToArray()
            Finally
                cs.Dispose()
            End Try
        Finally
            ciphertext.Dispose()
        End Try
    Finally
        aes.Dispose()
    End Try

End Sub

Комментарии

Эти данные могут интерпретироваться только владельцем закрытого ключа, соответствующего открытому ключу, используемому для шифрования данных. Это помогает гарантировать, что доступ к секретным сведениям может получить только предполагаемый получатель.

См. также раздел

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