RSAOAEPKeyExchangeDeformatter.DecryptKeyExchange(Byte[]) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從加密金鑰交換資料中提取秘密資訊。
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()
參數
- rgbData
- Byte[]
密鑰交換資料,其中隱藏著秘密資訊。
傳回
Byte[]
這些秘密資訊來自金鑰交換資料。
例外狀況
密鑰交換資料驗證失敗。
範例
以下範例說明如何使用此 DecryptKeyExchange 方法從訊息發送者重建交換金鑰。 此程式碼範例是本類別更大範例 RSAPKCS1KeyExchangeDeformatter 的一部分。
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
備註
你必須先指定一個金鑰,才能呼叫這個方法。