RSAOAEPKeyExchangeFormatter クラス
アセンブリ: mscorlib (mscorlib.dll 内)

<ComVisibleAttribute(True)> _ Public Class RSAOAEPKeyExchangeFormatter Inherits AsymmetricKeyExchangeFormatter
[ComVisibleAttribute(true)] public class RSAOAEPKeyExchangeFormatter : AsymmetricKeyExchangeFormatter
[ComVisibleAttribute(true)] public ref class RSAOAEPKeyExchangeFormatter : public AsymmetricKeyExchangeFormatter

キー交換を使用すると、送信者は、対称暗号化アルゴリズムでキーとして使用できるランダム データなどの秘密情報を作成し、それを暗号化して目的の受信者に送信できます。
RSAOAEPKeyExchangeDeformatter を使用して、キー交換を受け取り、その中から秘密情報を抽出します。
![]() |
---|
キー交換を正常に行うには、細かな操作を慎重に実行する必要があるため、提供されている基本機能から独自のキー交換方法を作成することはお勧めできません。 |

RSAOAEPKeyExchangeFormatter クラスのメンバを使用する方法を次のコード例に示します。
Imports System Imports System.Security.Cryptography Imports System.Text Public Class Form1 Inherits System.Windows.Forms.Form ' Use a member variable to hold the RSA key for encoding and decoding. Private rsaKey As RSA ' Event handler for Run button. Private Sub Button1_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button1.Click tbxOutput.Cursor = Cursors.WaitCursor tbxOutput.Text = "" Dim message As String = "A phrase to be encoded." InitializeKey(RSA.Create()) WriteLine("Encoding the following message:") WriteLine(message) Dim encodedMessage() As Byte = EncodeMessage(message) WriteLine("Resulting message encoded:") WriteLine(Encoding.ASCII.GetString(encodedMessage)) Dim decodedMessage As String = DecodeMessage(encodedMessage) WriteLine("Resulting message decoded:") WriteLine(decodedMessage) ' Construct a formatter to demonstrate how to set each property. ConstructFormatter() ' Construct a deformatter to demonstrate how to set each property. ConstructDeformatter() ' Align interface and conclude application. tbxOutput.AppendText(vbCrLf + "This sample completed " + _ "successfully; press Exit to continue.") ' Reset the cursor. tbxOutput.Cursor = Cursors.Default End Sub ' Initialize an rsaKey member variable with the specified RSA key. private sub InitializeKey(byval key as RSA) rsaKey = key End Sub ' Use the RSAOAEPKeyExchangeDeformatter class to decode the ' specified message. Private Function EncodeMessage(ByVal message As String) As Byte() Dim encodedMessage() As Byte = Nothing Try ' Construct a formatter with the specified RSA key. Dim keyEncryptor As New RSAOAEPKeyExchangeFormatter(rsaKey) ' Convert the message to bytes to create the encrypted data. Dim byteMessage() As Byte byteMessage = Encoding.ASCII.GetBytes(message) encodedMessage = keyEncryptor.CreateKeyExchange(byteMessage) Catch ex As Exception WriteLine("Unexpected exception caught:" + ex.ToString()) End Try Return encodedMessage End Function ' Use the RSAOAEPKeyExchangeDeformatter class to decode the ' specified message. Private Function DecodeMessage(ByVal encodedMessage() As Byte) As String Dim decodedMessage As String = Nothing Try ' Construct a deformatter with the specified RSA key. Dim keyDecryptor As New RSAOAEPKeyExchangeDeformatter(rsaKey) ' Decrypt the encoded message. Dim decodedBytes() As Byte decodedBytes = keyDecryptor.DecryptKeyExchange(encodedMessage) ' Retrieve a string representation of the decoded message. decodedMessage = Encoding.ASCII.GetString(decodedBytes) Catch ex As Exception WriteLine("Unexpected exception caught:" + ex.ToString()) End Try Return decodedMessage End Function ' Create an RSAOAEPKeyExchangeFormatter object with a new RSA key. ' Display its properties to the console. Private Sub ConstructFormatter() ' Construct an empty Optimal Asymmetric Encryption Padding (OAEP) ' key exchange. Dim rsaFormatter = New RSAOAEPKeyExchangeFormatter ' Create an RSA and set it into the specified ' RSAOAEPKeyExchangeFormatter. Dim key As RSA = RSA.Create() rsaFormatter.SetKey(key) ' Create a random number using the RNGCryptoServiceProvider provider. Dim ring As New RNGCryptoServiceProvider rsaFormatter.Rng = ring ' Export InverseQ and set it into RSAOAEPKeyExchangeFormatter. rsaFormatter.Parameter = key.ExportParameters(True).InverseQ WriteLine(vbCrLf + "**" + rsaFormatter.ToString() + "**") WriteLine("The following random number was generated for the class:") WriteLine(rsaFormatter.Rng.ToString()) WriteLine(vbCrLf + "The RSA formatter contains the following " + _ "InverseQ parameter:") WriteLine(Encoding.ASCII.GetString(rsaFormatter.Parameter)) Dim xmlParameters as string = rsaFormatter.Parameters WriteLine(vbCrLf + "The RSA formatter has the following parameters:") WriteLine(xmlParameters ) End Sub ' Create an RSAOAEPKeyExchangeDeformatter object with a new RSA key. ' Display its properties to the console. Private Sub ConstructDeformatter() ' Construct an empty OAEP key exchange. Dim rsaDeformatter As New RSAOAEPKeyExchangeDeformatter ' Create an RSAKey and set it into the specified ' RSAOAEPKeyExchangeDeformatter. Dim key As RSA = RSA.Create() rsaDeformatter.SetKey(key) Dim xmlParameters as string = rsaDeformatter.Parameters WriteLine(vbCrLf + "**" + rsaDeformatter.ToString() + "**") WriteLine(vbCrLf + "The RSA deformatter has the following ") WriteLine("parameters:" + xmlParameters) End Sub ' Write message with carriage return to output textbox. Private Sub WriteLine(ByVal message As String) tbxOutput.AppendText(message + vbCrLf) End Sub ' Event handler for Exit button. Private Sub Button2_Click( _ ByVal sender As System.Object, _ ByVal e As System.EventArgs) Handles Button2.Click Application.Exit() End Sub #Region " Windows Form Designer generated code " Public Sub New() MyBase.New() 'This call is required by the Windows Form Designer. InitializeComponent() 'Add any initialization after the InitializeComponent() call End Sub 'Form overrides dispose to clean up the component list. Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean) If disposing Then If Not (components Is Nothing) Then components.Dispose() End If End If MyBase.Dispose(disposing) End Sub 'Required by the Windows Form Designer Private components As System.ComponentModel.IContainer 'NOTE: The following procedure is required by the Windows Form Designer 'It can be modified using the Windows Form Designer. 'Do not modify it using the code editor. Friend WithEvents Panel2 As System.Windows.Forms.Panel Friend WithEvents Panel1 As System.Windows.Forms.Panel Friend WithEvents Button1 As System.Windows.Forms.Button Friend WithEvents Button2 As System.Windows.Forms.Button Friend WithEvents tbxOutput As System.Windows.Forms.RichTextBox <System.Diagnostics.DebuggerStepThrough()> _ Private Sub InitializeComponent() Me.Panel2 = New System.Windows.Forms.Panel Me.Button1 = New System.Windows.Forms.Button Me.Button2 = New System.Windows.Forms.Button Me.Panel1 = New System.Windows.Forms.Panel Me.tbxOutput = New System.Windows.Forms.RichTextBox Me.Panel2.SuspendLayout() Me.Panel1.SuspendLayout() Me.SuspendLayout() ' 'Panel2 ' Me.Panel2.Controls.Add(Me.Button1) Me.Panel2.Controls.Add(Me.Button2) Me.Panel2.Dock = System.Windows.Forms.DockStyle.Bottom Me.Panel2.DockPadding.All = 20 Me.Panel2.Location = New System.Drawing.Point(0, 320) Me.Panel2.Name = "Panel2" Me.Panel2.Size = New System.Drawing.Size(616, 64) Me.Panel2.TabIndex = 1 ' 'Button1 ' Me.Button1.Dock = System.Windows.Forms.DockStyle.Right Me.Button1.Font = New System.Drawing.Font("Microsoft Sans Serif", _ 9.0!, _ System.Drawing.FontStyle.Regular, _ System.Drawing.GraphicsUnit.Point, _ CType(0, Byte)) Me.Button1.Location = New System.Drawing.Point(446, 20) Me.Button1.Name = "Button1" Me.Button1.Size = New System.Drawing.Size(75, 24) Me.Button1.TabIndex = 2 Me.Button1.Text = "&Run" ' 'Button2 ' Me.Button2.Dock = System.Windows.Forms.DockStyle.Right Me.Button2.Font = New System.Drawing.Font( _ "Microsoft Sans Serif", 9.0!, _ System.Drawing.FontStyle.Regular, _ System.Drawing.GraphicsUnit.Point, _ CType(0, Byte)) Me.Button2.Location = New System.Drawing.Point(521, 20) Me.Button2.Name = "Button2" Me.Button2.Size = New System.Drawing.Size(75, 24) Me.Button2.TabIndex = 3 Me.Button2.Text = "E&xit" ' 'Panel1 ' Me.Panel1.Controls.Add(Me.tbxOutput) Me.Panel1.Dock = System.Windows.Forms.DockStyle.Fill Me.Panel1.DockPadding.All = 20 Me.Panel1.Location = New System.Drawing.Point(0, 0) Me.Panel1.Name = "Panel1" Me.Panel1.Size = New System.Drawing.Size(616, 320) Me.Panel1.TabIndex = 2 ' 'tbxOutput ' Me.tbxOutput.AccessibleDescription = _ "Displays output from application." Me.tbxOutput.AccessibleName = "Output textbox." Me.tbxOutput.Dock = System.Windows.Forms.DockStyle.Fill Me.tbxOutput.Location = New System.Drawing.Point(20, 20) Me.tbxOutput.Name = "tbxOutput" Me.tbxOutput.Size = New System.Drawing.Size(576, 280) Me.tbxOutput.TabIndex = 1 Me.tbxOutput.Text = "Click the Run button to run the application." ' 'Form1 ' Me.AutoScaleBaseSize = New System.Drawing.Size(6, 15) Me.ClientSize = New System.Drawing.Size(616, 384) Me.Controls.Add(Me.Panel1) Me.Controls.Add(Me.Panel2) Me.Name = "Form1" Me.Text = "RSAOAEPKeyExchangeFormatter" Me.Panel2.ResumeLayout(False) Me.Panel1.ResumeLayout(False) Me.ResumeLayout(False) End Sub #End Region End Class ' ' This sample produces the following output: ' ' Encoding the following message: ' A phrase to be encoded. ' Resulting message encoded:k90)DU890fus8d9u*D_(8 ' Resulting message decoded: ' A phrase to be encoded. ' ' **System.Security.Cryptography.RSAOAEPKeyExchangeFormatter** ' The following random number was generated for the class: ' System.Security.Cryptography.RNGCryptoServiceProvider ' ' The RSA formatter contains the following InverseQ parameter: ' J*Df89uDZ*(*F09 ' The RSA formatter has the following parameters: ' ' ' **System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter** ' ' The RSA deformatter has the following ' parameters: ' ' This sample completed successfully; press Exit to continue.
using System; using System.Security.Cryptography; using System.Text; class RSAEncoder { // Use a member variable to hold the RSA key for encoding and decoding. private RSA rsaKey; [STAThread] static void Main(string[] args) { string message = "A phrase to be encoded."; RSAEncoder rsaEncoder = new RSAEncoder(); rsaEncoder.InitializeKey(RSA.Create()); Console.WriteLine("Encoding the following message:"); Console.WriteLine(message); byte[] encodedMessage = rsaEncoder.EncodeMessage(message); Console.WriteLine("Resulting message encoded:"); Console.WriteLine(Encoding.ASCII.GetString(encodedMessage)); string decodedMessage = rsaEncoder.DecodeMessage(encodedMessage); Console.WriteLine("Resulting message decoded:"); Console.WriteLine(decodedMessage); // Construct a formatter to demonstrate how to set each property. rsaEncoder.ConstructFormatter(); // Construct a deformatter to demonstrate how to set each property. rsaEncoder.ConstructDeformatter(); Console.WriteLine("This sample completed successfully, " + " press enter to continue."); Console.ReadLine(); } // Initialize an rsaKey member variable with the specified RSA key. private void InitializeKey(RSA key) { rsaKey = key; } // Use the RSAOAEPKeyExchangeDeformatter class to decode the // specified message. private byte[] EncodeMessage(string message) { byte[] encodedMessage = null; try { // Construct a formatter with the specified RSA key. RSAOAEPKeyExchangeFormatter keyEncryptor = new RSAOAEPKeyExchangeFormatter(rsaKey); // Convert the message to bytes to create the encrypted data. byte[] byteMessage = Encoding.ASCII.GetBytes(message); encodedMessage = keyEncryptor.CreateKeyExchange(byteMessage); } catch (Exception ex) { Console.WriteLine("Unexpected exception caught:" + ex.ToString()); } return encodedMessage; } // Use the RSAOAEPKeyExchangeDeformatter class to decode the // specified message. private string DecodeMessage(byte[] encodedMessage) { string decodedMessage = null; try { // Construct a deformatter with the specified RSA key. RSAOAEPKeyExchangeDeformatter keyDecryptor = new RSAOAEPKeyExchangeDeformatter(rsaKey); // Decrypt the encoded message. byte[] decodedBytes = keyDecryptor.DecryptKeyExchange(encodedMessage); // Retrieve a string representation of the decoded message. decodedMessage = Encoding.ASCII.GetString(decodedBytes); } catch (Exception ex) { Console.WriteLine("Unexpected exception caught:" + ex.ToString()); } return decodedMessage; } // Create an RSAOAEPKeyExchangeFormatter object with a new RSA key. // Display its properties to the console. private void ConstructFormatter() { // Construct an empty Optimal Asymmetric Encryption Padding (OAEP) // key exchange. RSAOAEPKeyExchangeFormatter rsaFormatter = new RSAOAEPKeyExchangeFormatter(); // Create an RSA and set it into the specified // RSAOAEPKeyExchangeFormatter. RSA key = RSA.Create(); rsaFormatter.SetKey(key); // Create a random number using the RNGCryptoServiceProvider provider. RNGCryptoServiceProvider ring = new RNGCryptoServiceProvider(); rsaFormatter.Rng = ring; // Export InverseQ and set it into the RSAOAEPKeyExchangeFormatter. rsaFormatter.Parameter = key.ExportParameters(true).InverseQ; Console.WriteLine(); Console.WriteLine("**" + rsaFormatter.ToString() + "**"); Console.Write("The following random number was generated using the "); Console.WriteLine("class:"); Console.WriteLine(rsaFormatter.Rng); Console.WriteLine(); Console.Write("The RSA formatter contains the following InverseQ"); Console.WriteLine(" parameter:"); Console.WriteLine(Encoding.ASCII.GetString(rsaFormatter.Parameter)); Console.WriteLine(); string xmlParameters = rsaFormatter.Parameters; Console.WriteLine("The RSA formatter has the following parameters:"); Console.WriteLine(xmlParameters); } // Create an RSAOAEPKeyExchangeDeformatter object with a new RSA key. // Display its properties to the console. private void ConstructDeformatter() { // Construct an empty OAEP key exchange. RSAOAEPKeyExchangeDeformatter rsaDeformatter = new RSAOAEPKeyExchangeDeformatter(); // Create an RSAKey and set it into the specified // RSAOAEPKeyExchangeFormatter. RSA key = RSA.Create(); rsaDeformatter.SetKey(key); Console.WriteLine(); Console.WriteLine("**" + rsaDeformatter.ToString() + "**"); string xmlParameters = rsaDeformatter.Parameters; Console.WriteLine(); Console.WriteLine("The RSA deformatter has the following "); Console.WriteLine("parameters:" + xmlParameters); } } // // This sample produces the following output: // // Encoding the following message: // A phrase to be encoded. // Resulting message encoded: %?}T:v??xu?eD)YucItjwuALH HB,Uj??2xq?.?s45 // ?f?L2?=X?CPzWx???"q5?6&N"AE,Z+T?(]S?_7~,?G{?VV!:S?df? // Resulting message decoded: // A phrase to be encoded. // // **System.Security.Cryptography.RSAOAEPKeyExchangeFormatter** // The following random number was generated using the class: // System.Security.Cryptography.RNGCryptoServiceProvider // // The RSA formatter contains the following InverseQ parameter: // 3MM??]D#?mBq_;:ws^1?ko??,_ ??A[hyWcP$?`v.>@?^!dU%\?H0N'??Ca?Ns // // The RSA formatter has the following parameters: // // // **System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter** // // The RSA deformatter has the following // parameters: // This sample completed successfully, press enter to continue.
using namespace System; using namespace System::Security::Cryptography; using namespace System::Text; ref class RSAEncoder { private: // Use a member variable to hold the RSA key for encoding and decoding. RSA^ rsaKey; public: [STAThread] static void Main() { String^ message = L"A phrase to be encoded."; RSAEncoder^ rsaEncoder = gcnew RSAEncoder; rsaEncoder->InitializeKey( RSA::Create() ); Console::WriteLine( L"Encoding the following message:" ); Console::WriteLine( message ); array<Byte>^encodedMessage = rsaEncoder->EncodeMessage( message ); Console::WriteLine( L"Resulting message encoded:" ); Console::WriteLine( Encoding::ASCII->GetString( encodedMessage ) ); String^ decodedMessage = rsaEncoder->DecodeMessage( encodedMessage ); Console::WriteLine( L"Resulting message decoded:" ); Console::WriteLine( decodedMessage ); // Construct a formatter to demonstrate how to set each property. rsaEncoder->ConstructFormatter(); // Construct a deformatter to demonstrate how to set each property. rsaEncoder->ConstructDeformatter(); Console::WriteLine( L"This sample completed successfully, " L" press enter to continue." ); Console::ReadLine(); } private: // Initialize an rsaKey member variable with the specified RSA key. void InitializeKey( RSA^ key ) { rsaKey = key; } // Use the RSAOAEPKeyExchangeDeformatter class to decode the // specified message. array<Byte>^ EncodeMessage( String^ message ) { array<Byte>^encodedMessage = nullptr; try { // Construct a formatter with the specified RSA key. RSAOAEPKeyExchangeFormatter^ keyEncryptor = gcnew RSAOAEPKeyExchangeFormatter( rsaKey ); // Convert the message to bytes to create the encrypted data. array<Byte>^byteMessage = Encoding::ASCII->GetBytes( message ); encodedMessage = keyEncryptor->CreateKeyExchange( byteMessage ); } catch ( Exception^ ex ) { Console::WriteLine( L"Unexpected exception caught:{0}", ex ); } return encodedMessage; } // Use the RSAOAEPKeyExchangeDeformatter class to decode the // specified message. String^ DecodeMessage( array<Byte>^encodedMessage ) { String^ decodedMessage = nullptr; try { // Construct a deformatter with the specified RSA key. RSAOAEPKeyExchangeDeformatter^ keyDecryptor = gcnew RSAOAEPKeyExchangeDeformatter( rsaKey ); // Decrypt the encoded message. array<Byte>^decodedBytes = keyDecryptor->DecryptKeyExchange( encodedMessage ); // Retrieve a string representation of the decoded message. decodedMessage = Encoding::ASCII->GetString( decodedBytes ); } catch ( Exception^ ex ) { Console::WriteLine( L"Unexpected exception caught:{0}", ex ); } return decodedMessage; } // Create an RSAOAEPKeyExchangeFormatter object with a new RSA key. // Display its properties to the console. void ConstructFormatter() { // Construct an empty Optimal Asymmetric Encryption Padding (OAEP) // key exchange. RSAOAEPKeyExchangeFormatter^ rsaFormatter = gcnew RSAOAEPKeyExchangeFormatter; // Create an RSA and set it into the specified // RSAOAEPKeyExchangeFormatter. RSA^ key = RSA::Create(); rsaFormatter->SetKey( key ); // Create a random number using the RNGCryptoServiceProvider provider. RNGCryptoServiceProvider^ ring = gcnew RNGCryptoServiceProvider; rsaFormatter->Rng = ring; // Export InverseQ and set it into the RSAOAEPKeyExchangeFormatter. rsaFormatter->Parameter = key->ExportParameters( true ).InverseQ; Console::WriteLine(); Console::WriteLine( L"**{0}**", rsaFormatter ); Console::Write( L"The following random number was generated using the " ); Console::WriteLine( L"class:" ); Console::WriteLine( rsaFormatter->Rng ); Console::WriteLine(); Console::Write( L"The RSA formatter contains the following InverseQ" ); Console::WriteLine( L" parameter:" ); Console::WriteLine( Encoding::ASCII->GetString( rsaFormatter->Parameter ) ); Console::WriteLine(); String^ xmlParameters = rsaFormatter->Parameters; Console::WriteLine( L"The RSA formatter has the following parameters:" ); Console::WriteLine( xmlParameters ); } // Create an RSAOAEPKeyExchangeDeformatter object with a new RSA key. // Display its properties to the console. void ConstructDeformatter() { // Construct an empty OAEP key exchange. RSAOAEPKeyExchangeDeformatter^ rsaDeformatter = gcnew RSAOAEPKeyExchangeDeformatter; // Create an RSAKey and set it into the specified // RSAOAEPKeyExchangeFormatter. RSA^ key = RSA::Create(); rsaDeformatter->SetKey( key ); Console::WriteLine(); Console::WriteLine( L"**{0}**", rsaDeformatter ); String^ xmlParameters = rsaDeformatter->Parameters; Console::WriteLine(); Console::WriteLine( L"The RSA deformatter has the following " ); Console::WriteLine( L"parameters:{0}", xmlParameters ); } }; int main() { RSAEncoder::Main(); } // // This sample produces the following output: // // Encoding the following message: // A phrase to be encoded. // Resulting message encoded: %?}T:v??xu?eD)YucItjwuALH HB,Uj??2xq?.?s45 // ?f?L2?=X?CPzWx???"q5?6&N"AE,Z+T?(]S?_7~,?G{?VV!:S?df? // Resulting message decoded: // A phrase to be encoded. // // **System.Security.Cryptography.RSAOAEPKeyExchangeFormatter** // The following random number was generated using the class: // System.Security.Cryptography.RNGCryptoServiceProvider // // The RSA formatter contains the following InverseQ parameter: // 3MM??]D#?mBq_;:ws^1?ko??,_ ??A[hyWcP$?`v.>@?^!dU%\?H0N'??Ca?Ns // // The RSA formatter has the following parameters: // // // **System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter** // // The RSA deformatter has the following // parameters: // This sample completed successfully, press enter to continue.
import System.*; import System.Security.Cryptography.*; import System.Text.*; class RSAEncoder { // Use a member variable to hold the RSA key for encoding and decoding. private RSA rsaKey; /** @attribute STAThread() */ public static void main(String[] args) { String message = "A phrase to be encoded."; RSAEncoder rsaEncoder = new RSAEncoder(); rsaEncoder.InitializeKey(RSA.Create()); Console.WriteLine("Encoding the following message:"); Console.WriteLine(message); ubyte encodedMessage[] = rsaEncoder.EncodeMessage(message); Console.WriteLine("Resulting message encoded:"); Console.WriteLine(Encoding.get_ASCII().GetString(encodedMessage)); String decodedMessage = rsaEncoder.DecodeMessage(encodedMessage); Console.WriteLine("Resulting message decoded:"); Console.WriteLine(decodedMessage); // Construct a formatter to demonstrate how to set each property. rsaEncoder.ConstructFormatter(); // Construct a deformatter to demonstrate how to set each property. rsaEncoder.ConstructDeformatter(); Console.WriteLine("This sample completed successfully, " + " press enter to continue."); Console.ReadLine(); } //main // Initialize an rsaKey member variable with the specified RSA key. private void InitializeKey(RSA key) { rsaKey = key; } //InitializeKey // Use the RSAOAEPKeyExchangeDeformatter class to decode the // specified message. private ubyte[] EncodeMessage(String message) { ubyte encodedMessage[] = null; try { // Construct a formatter with the specified RSA key. RSAOAEPKeyExchangeFormatter keyEncryptor = new RSAOAEPKeyExchangeFormatter(rsaKey); // Convert the message to bytes to create the encrypted data. ubyte byteMessage[] = Encoding.get_ASCII().GetBytes(message); encodedMessage = keyEncryptor.CreateKeyExchange(byteMessage); } catch (System.Exception ex) { Console.WriteLine("Unexpected exception caught:" + ex.ToString()); } return encodedMessage; } //EncodeMessage // Use the RSAOAEPKeyExchangeDeformatter class to decode the // specified message. private String DecodeMessage(ubyte encodedMessage[]) { String decodedMessage = null; try { // Construct a deformatter with the specified RSA key. RSAOAEPKeyExchangeDeformatter keyDecryptor = new RSAOAEPKeyExchangeDeformatter(rsaKey); // Decrypt the encoded message. ubyte decodedBytes[] = keyDecryptor. DecryptKeyExchange(encodedMessage); // Retrieve a string representation of the decoded message. decodedMessage = Encoding.get_ASCII().GetString(decodedBytes); } catch (System.Exception ex) { Console.WriteLine("Unexpected exception caught:" + ex.ToString()); } return decodedMessage; } //DecodeMessage // Create an RSAOAEPKeyExchangeFormatter object with a new RSA key. // Display its properties to the console. private void ConstructFormatter() { // Construct an empty Optimal Asymmetric Encryption Padding (OAEP) // key exchange. RSAOAEPKeyExchangeFormatter rsaFormatter = new RSAOAEPKeyExchangeFormatter(); // Create an RSA and set it into the specified // RSAOAEPKeyExchangeFormatter. RSA key = RSA.Create(); rsaFormatter.SetKey(key); // Create a random number using the RNGCryptoServiceProvider provider. RNGCryptoServiceProvider ring = new RNGCryptoServiceProvider(); rsaFormatter.set_Rng(ring); // Export InverseQ and set it into the RSAOAEPKeyExchangeFormatter. rsaFormatter.set_Parameter(key.ExportParameters(true).InverseQ); Console.WriteLine(); Console.WriteLine("**" + rsaFormatter.ToString() + "**"); Console.Write("The following random number was generated using the "); Console.WriteLine("class:"); Console.WriteLine(rsaFormatter.get_Rng()); Console.WriteLine(); Console.Write("The RSA formatter contains the following InverseQ"); Console.WriteLine(" parameter:"); Console.WriteLine(Encoding.get_ASCII().GetString(rsaFormatter. get_Parameter())); Console.WriteLine(); String xmlParameters = rsaFormatter.get_Parameters(); Console.WriteLine("The RSA formatter has the following parameters:"); Console.WriteLine(xmlParameters); } //ConstructFormatter // Create an RSAOAEPKeyExchangeDeformatter object with a new RSA key. // Display its properties to the console. private void ConstructDeformatter() { // Construct an empty OAEP key exchange. RSAOAEPKeyExchangeDeformatter rsaDeformatter = new RSAOAEPKeyExchangeDeformatter(); // Create an RSAKey and set it into the specified // RSAOAEPKeyExchangeFormatter. RSA key = RSA.Create(); rsaDeformatter.SetKey(key); Console.WriteLine(); Console.WriteLine("**" + rsaDeformatter.ToString() + "**"); String xmlParameters = rsaDeformatter.get_Parameters(); Console.WriteLine(); Console.WriteLine("The RSA deformatter has the following "); Console.WriteLine("parameters:" + xmlParameters); } //ConstructDeformatter } //RSAEncoder // // This sample produces the following output: // // Encoding the following message: // A phrase to be encoded. // Resulting message encoded: %?}T:v??xu?eD)YucItjwuALH HB,Uj??2xq?.?s45 // ?f?L2?=X?CPzWx???"q5?6&N"AE,Z+T?(]S?_7~,?G{?VV!:S?df? // Resulting message decoded: // A phrase to be encoded. // // **System.Security.Cryptography.RSAOAEPKeyExchangeFormatter** // The following random number was generated using the class: // System.Security.Cryptography.RNGCryptoServiceProvider // // The RSA formatter contains the following InverseQ parameter: // 3MM??]D#?mBq_;:ws^1?ko??,_ ??A[hyWcP$?`v.>@?^!dU%\?H0N'??Ca?Ns // // The RSA formatter has the following parameters: // // // **System.Security.Cryptography.RSAOAEPKeyExchangeDeformatter** // // The RSA deformatter has the following // parameters: // This sample completed successfully, press enter to continue.

System.Security.Cryptography.AsymmetricKeyExchangeFormatter
System.Security.Cryptography.RSAOAEPKeyExchangeFormatter


Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


RSAOAEPKeyExchangeFormatter コンストラクタ ()
アセンブリ: mscorlib (mscorlib.dll 内)



RSAOAEPKeyExchangeFormatter コンストラクタを使用して空の OAEP キー交換を作成する方法を次のコード例に示します。このコード例は、RSAOAEPKeyExchangeFormatter クラスのトピックで取り上げているコード例の一部分です。
RSAOAEPKeyExchangeFormatter^ rsaFormatter = gcnew RSAOAEPKeyExchangeFormatter;

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


RSAOAEPKeyExchangeFormatter コンストラクタ (AsymmetricAlgorithm)
アセンブリ: mscorlib (mscorlib.dll 内)


RSA キーを指定して RSAOAEPKeyExchangeFormatter を構築する方法を次のコード例に示します。このコード例は、RSAOAEPKeyExchangeFormatter クラスのトピックで取り上げているコード例の一部分です。
RSAOAEPKeyExchangeFormatter^ keyEncryptor = gcnew RSAOAEPKeyExchangeFormatter( rsaKey );

Windows 98, Windows 2000 SP4, Windows Millennium Edition, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
開発プラットフォームの中には、.NET Framework によってサポートされていないバージョンがあります。サポートされているバージョンについては、「システム要件」を参照してください。


RSAOAEPKeyExchangeFormatter コンストラクタ

名前 | 説明 |
---|---|
RSAOAEPKeyExchangeFormatter () | RSAOAEPKeyExchangeFormatter クラスの新しいインスタンスを初期化します。 |
RSAOAEPKeyExchangeFormatter (AsymmetricAlgorithm) | 指定したキーを使用して、RSAOAEPKeyExchangeFormatter クラスの新しいインスタンスを初期化します。 |

RSAOAEPKeyExchangeFormatter プロパティ

名前 | 説明 | |
---|---|---|
![]() | Parameter | キー交換の作成プロセスでパディングの作成に使用するパラメータを取得または設定します。 |
![]() | Parameters | オーバーライドされます。 OAEP (Optimal Asymmetric Encryption Padding) キー交換のパラメータを取得します。 |
![]() | Rng | キー交換の作成に使用する乱数ジェネレータ アルゴリズムを取得または設定します。 |

RSAOAEPKeyExchangeFormatter メソッド

名前 | 説明 | |
---|---|---|
![]() | CreateKeyExchange | オーバーロードされます。 オーバーライドされます。 暗号化されたキー交換データを作成します。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 ( Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 ( Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 ( Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 ( Object から継承されます。) |
![]() | SetKey | オーバーライドされます。 キー交換データの暗号化に使用する公開キーを設定します。 |
![]() | ToString | 現在の Object を表す String を返します。 ( Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 ( Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 ( Object から継承されます。) |

RSAOAEPKeyExchangeFormatter メンバ
RSA を使用して、OAEP (Optimal Asymmetric Encryption Padding) キー交換データを作成します。
RSAOAEPKeyExchangeFormatter データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | Parameter | キー交換の作成プロセスでパディングの作成に使用するパラメータを取得または設定します。 |
![]() | Parameters | オーバーライドされます。 OAEP (Optimal Asymmetric Encryption Padding) キー交換のパラメータを取得します。 |
![]() | Rng | キー交換の作成に使用する乱数ジェネレータ アルゴリズムを取得または設定します。 |

名前 | 説明 | |
---|---|---|
![]() | CreateKeyExchange | オーバーロードされます。 オーバーライドされます。 暗号化されたキー交換データを作成します。 |
![]() | Equals | オーバーロードされます。 2 つの Object インスタンスが等しいかどうかを判断します。 (Object から継承されます。) |
![]() | GetHashCode | 特定の型のハッシュ関数として機能します。GetHashCode は、ハッシュ アルゴリズムや、ハッシュ テーブルのようなデータ構造での使用に適しています。 (Object から継承されます。) |
![]() | GetType | 現在のインスタンスの Type を取得します。 (Object から継承されます。) |
![]() | ReferenceEquals | 指定した複数の Object インスタンスが同一かどうかを判断します。 (Object から継承されます。) |
![]() | SetKey | オーバーライドされます。 キー交換データの暗号化に使用する公開キーを設定します。 |
![]() | ToString | 現在の Object を表す String を返します。 (Object から継承されます。) |

名前 | 説明 | |
---|---|---|
![]() | Finalize | Object がガベージ コレクションにより収集される前に、その Object がリソースを解放し、その他のクリーンアップ操作を実行できるようにします。 (Object から継承されます。) |
![]() | MemberwiseClone | 現在の Object の簡易コピーを作成します。 (Object から継承されます。) |

- RSAOAEPKeyExchangeFormatterのページへのリンク