Compartir vía


RSAPKCS1KeyExchangeDeformatter.DecryptKeyExchange(Byte[]) Método

Definición

Extrae información secreta de los datos cifrados de intercambio de claves.

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

Parámetros

rgbIn
Byte[]

Datos de intercambio de claves en los que la información secreta está oculta.

Devoluciones

Byte[]

Información secreta derivada de los datos de intercambio de claves.

Excepciones

Ejemplos

En el ejemplo siguiente se muestra cómo usar el DecryptKeyExchange método para volver a crear una clave de intercambio desde un remitente del mensaje. Este ejemplo de código es parte de un ejemplo más grande proporcionado para la clase RSAPKCS1KeyExchangeDeformatter.

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

    using (Aes aes = new AesCryptoServiceProvider())
    {
        aes.IV = iv;

        // Decrypt the session key
        RSAPKCS1KeyExchangeDeformatter keyDeformatter = new RSAPKCS1KeyExchangeDeformatter(rsaKey);
        aes.Key = keyDeformatter.DecryptKeyExchange(encryptedSessionKey);

        // 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);
        }
    }
}
Public Sub Receive(ByVal iv() As Byte, ByVal encryptedSessionKey() As Byte, ByVal encryptedMessage() As Byte)

    Dim aes = New AesCryptoServiceProvider()
    Try
        aes.IV = iv

        ' Decrypt the session key
        Dim keyDeformatter As New RSAPKCS1KeyExchangeDeformatter(rsaKey)
        aes.Key = keyDeformatter.DecryptKeyExchange(encryptedSessionKey)

        ' Decrypt the message
        Dim plaintext As New MemoryStream()
        Try
            Dim cs As New CryptoStream(plaintext, aes.CreateDecryptor(), CryptoStreamMode.Write)
            Try
                cs.Write(encryptedMessage, 0, encryptedMessage.Length)
                cs.Close()

                Dim message As String = Encoding.UTF8.GetString(plaintext.ToArray())
                Console.WriteLine(message)
            Finally
                cs.Dispose()
            End Try
        Finally
            plaintext.Dispose()
        End Try
    Finally
        aes.Dispose()
    End Try

End Sub

Comentarios

Debe especificar una clave antes de llamar a este método.

Se aplica a

Consulte también