RSAPKCS1KeyExchangeDeformatter.DecryptKeyExchange(Byte[]) 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
從加密的金鑰交換資料中擷取秘密資訊。
public:
override cli::array <System::Byte> ^ DecryptKeyExchange(cli::array <System::Byte> ^ rgbIn);
public override byte[] DecryptKeyExchange (byte[] rgbIn);
override this.DecryptKeyExchange : byte[] -> byte[]
Public Overrides Function DecryptKeyExchange (rgbIn As Byte()) As Byte()
參數
- rgbIn
- 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
RSAPKCS1KeyExchangeDeformatter keyDeformatter = new RSAPKCS1KeyExchangeDeformatter(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)
Dim aes = New AesCryptoServiceProvider()
Try
aes.IV = iv
' Decrypt the session key
Dim keyDeformatter As New RSAPKCS1KeyExchangeDeformatter(rsaKey)
aes.Key = keyDeformatter.DecryptKeyExchange(encryptedSessionKey)
' Decrypt the message
Dim plaintext As New MemoryStream()
Try
Dim cs As New CryptoStream(plaintext, aes.CreateDecryptor(), CryptoStreamMode.Write)
Try
cs.Write(encryptedMessage, 0, encryptedMessage.Length)
cs.Close()
Dim message As String = Encoding.UTF8.GetString(plaintext.ToArray())
Console.WriteLine(message)
Finally
cs.Dispose()
End Try
Finally
plaintext.Dispose()
End Try
Finally
aes.Dispose()
End Try
End Sub
備註
您必須先指定索引鍵,才能呼叫這個方法。