RSAPKCS1KeyExchangeFormatter.CreateKeyExchange Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Erstellt die verschlüsselten Schlüsselaustauschdaten.
Überlädt
CreateKeyExchange(Byte[]) |
Erstellt anhand der angegebenen Eingabedaten die verschlüsselten Schlüsselaustauschdaten. |
CreateKeyExchange(Byte[], Type) |
Erstellt anhand der angegebenen Eingabedaten die verschlüsselten Schlüsselaustauschdaten. |
CreateKeyExchange(Byte[])
Erstellt anhand der angegebenen Eingabedaten die verschlüsselten Schlüsselaustauschdaten.
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()
Parameter
- rgbData
- Byte[]
Die beim Schlüsselaustausch zu übergebenden geheimen Informationen.
Gibt zurück
Die an den beabsichtigten Empfänger zu sendenden verschlüsselten Schlüsselaustauschdaten.
Ausnahmen
rgbData
ist zu groß.
Der Schlüssel ist null
.
Hinweise
Diese Daten können nur vom Inhaber des privaten Schlüssels interpretiert werden, der dem öffentlichen Schlüssel entspricht, der zum Verschlüsseln der Daten verwendet wird. Dadurch wird sichergestellt, dass nur der beabsichtigte Empfänger auf die Geheiminformationen zugreifen kann.
Weitere Informationen
Gilt für:
CreateKeyExchange(Byte[], Type)
Erstellt anhand der angegebenen Eingabedaten die verschlüsselten Schlüsselaustauschdaten.
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()
Parameter
- rgbData
- Byte[]
Die beim Schlüsselaustausch zu übergebenden geheimen Informationen.
- symAlgType
- Type
Dieser Parameter wird in der aktuellen Version nicht verwendet.
Gibt zurück
Die an den beabsichtigten Empfänger zu sendenden verschlüsselten Schlüsselaustauschdaten.
Beispiele
Das folgende Beispiel zeigt, wie Sie mit der RSAPKCS1KeyExchangeFormatter.CreateKeyExchange -Methode einen Austauschschlüssel für einen Nachrichtenempfänger erstellen. Dieses Codebeispiel ist Teil eines größeren Beispiels, das für die RSAPKCS1KeyExchangeFormatter-Klasse bereitgestellt wird.
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
Hinweise
Diese Daten können nur vom Inhaber des privaten Schlüssels interpretiert werden, der dem öffentlichen Schlüssel entspricht, der zum Verschlüsseln der Daten verwendet wird. Dadurch wird sichergestellt, dass nur der beabsichtigte Empfänger auf die Geheiminformationen zugreifen kann.