Udostępnij za pośrednictwem


RSAPKCS1KeyExchangeFormatter.CreateKeyExchange Metoda

Definicja

Tworzy zaszyfrowane dane wymiany kluczy.

Przeciążenia

CreateKeyExchange(Byte[])

Tworzy zaszyfrowane dane wymiany kluczy na podstawie określonych danych wejściowych.

CreateKeyExchange(Byte[], Type)

Tworzy zaszyfrowane dane wymiany kluczy na podstawie określonych danych wejściowych.

CreateKeyExchange(Byte[])

Tworzy zaszyfrowane dane wymiany kluczy na podstawie określonych danych wejściowych.

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

Parametry

rgbData
Byte[]

Informacje tajne, które mają zostać przekazane w ramach wymiany kluczy.

Zwraca

Byte[]

Zaszyfrowane dane wymiany kluczy, które mają zostać wysłane do zamierzonego adresata.

Wyjątki

rgbData jest zbyt duży.

Uwagi

Te dane mogą być interpretowane tylko przez posiadacza klucza prywatnego odpowiadającego kluczowi publicznemu używanemu do szyfrowania danych. Pomaga to zagwarantować, że tylko zamierzony odbiorca będzie mógł uzyskać dostęp do informacji tajnych.

Zobacz też

Dotyczy

CreateKeyExchange(Byte[], Type)

Tworzy zaszyfrowane dane wymiany kluczy na podstawie określonych danych wejściowych.

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

Parametry

rgbData
Byte[]

Informacje tajne, które mają zostać przekazane w ramach wymiany kluczy.

symAlgType
Type

Ten parametr nie jest używany w bieżącej wersji.

Zwraca

Byte[]

Zaszyfrowane dane wymiany kluczy, które mają zostać wysłane do zamierzonego adresata.

Przykłady

W poniższym przykładzie pokazano, jak za pomocą RSAPKCS1KeyExchangeFormatter.CreateKeyExchange metody utworzyć klucz wymiany dla adresata wiadomości. Ten przykład kodu jest częścią większego przykładu udostępnionego RSAPKCS1KeyExchangeFormatter dla klasy .

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

Uwagi

Te dane mogą być interpretowane tylko przez posiadacza klucza prywatnego odpowiadającego kluczowi publicznemu używanemu do szyfrowania danych. Pomaga to zagwarantować, że tylko zamierzony odbiorca będzie mógł uzyskać dostęp do informacji tajnych.

Zobacz też

Dotyczy