RSAPKCS1KeyExchangeFormatter.CreateKeyExchange Método

Definición

Crea los datos del intercambio de claves cifradas.

Sobrecargas

CreateKeyExchange(Byte[])

Crea los datos de intercambio de claves cifradas a partir de los datos de entrada especificados.

CreateKeyExchange(Byte[], Type)

Crea los datos de intercambio de claves cifradas a partir de los datos de entrada especificados.

CreateKeyExchange(Byte[])

Crea los datos de intercambio de claves cifradas a partir de los datos de entrada especificados.

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()

Parámetros

rgbData
Byte[]

Información secreta que se pasará en el intercambio de claves.

Devoluciones

Byte[]

Datos de intercambio de claves cifradas que se enviarán al destinatario previsto.

Excepciones

rgbData es demasiado grande.

Comentarios

Estos datos solo los puede interpretar el titular de la clave privada correspondiente a la clave pública que se usa para cifrar los datos. Esto ayuda a garantizar que solo el destinatario deseado pueda acceder a la información secreta.

Consulte también

Se aplica a

CreateKeyExchange(Byte[], Type)

Crea los datos de intercambio de claves cifradas a partir de los datos de entrada especificados.

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()

Parámetros

rgbData
Byte[]

Información secreta que se pasará en el intercambio de claves.

symAlgType
Type

Este parámetro no se usa en la versión actual.

Devoluciones

Byte[]

Datos de intercambio de claves cifradas que se enviarán al destinatario previsto.

Ejemplos

En el ejemplo siguiente se muestra cómo usar el RSAPKCS1KeyExchangeFormatter.CreateKeyExchange método para crear una clave de intercambio para un destinatario del mensaje. Este ejemplo de código forma parte de un ejemplo más grande proporcionado para la RSAPKCS1KeyExchangeFormatter clase .

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

Comentarios

Estos datos solo los puede interpretar el titular de la clave privada correspondiente a la clave pública que se usa para cifrar los datos. Esto ayuda a garantizar que solo el destinatario deseado pueda acceder a la información secreta.

Consulte también

Se aplica a