Udostępnij za pośrednictwem


RSAOAEPKeyExchangeDeformatter.DecryptKeyExchange(Byte[]) Metoda

Definicja

Wyodrębnia informacje tajne z zaszyfrowanych danych wymiany kluczy.

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

Parametry

rgbData
Byte[]

Dane wymiany kluczy, w których informacje tajne są ukryte.

Zwraca

Byte[]

Informacje tajne pochodzące z danych wymiany kluczy.

Wyjątki

Weryfikacja danych wymiany kluczy nie powiodła się.

Przykłady

W poniższym przykładzie pokazano, jak użyć DecryptKeyExchange metody do ponownego utworzenia klucza wymiany od nadawcy komunikatów. Ten przykład kodu jest częścią większego przykładu udostępnionego RSAPKCS1KeyExchangeDeformatter dla klasy .

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

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

        // Decrypt the session key
        RSAOAEPKeyExchangeDeformatter keyDeformatter = new RSAOAEPKeyExchangeDeformatter(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)

    Using aes = New AesCryptoServiceProvider()

        aes.IV = iv

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

        ' 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

Uwagi

Przed wywołaniem tej metody należy określić klucz.

Dotyczy

Zobacz też