RSAPKCS1KeyExchangeFormatter.CreateKeyExchange Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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
Datos de intercambio de claves cifradas que se enviarán al destinatario previsto.
Excepciones
rgbData
es demasiado grande.
La clave es null
.
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
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 es parte de un ejemplo más grande proporcionado para la clase 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
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.