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

<ComVisibleAttribute(True)> _ Public NotInheritable Class RSACryptoServiceProvider Inherits RSA Implements ICspAsymmetricAlgorithm
[ComVisibleAttribute(true)] public sealed class RSACryptoServiceProvider : RSA, ICspAsymmetricAlgorithm
[ComVisibleAttribute(true)] public ref class RSACryptoServiceProvider sealed : public RSA, ICspAsymmetricAlgorithm

Microsoft Enhanced Cryptographic Provider がインストールされている場合、RSACryptoServiceProvider は 384 ビットから 16384 ビットのキー長を 8 ビット単位でサポートします。Microsoft ベース暗号化プロバイダがインストールされている場合は、384 ビットから 512 ビットのキー長を 8 ビット単位でサポートします。

RSACryptoServiceProvider クラスを使用して、文字列をバイト配列に暗号化し、そのバイトを文字列に復号化するコード例を次に示します。
Imports System Imports System.Security.Cryptography Imports System.Text _ Class RSACSPSample Shared Sub Main() Try 'Create a UnicodeEncoder to convert between byte array and string. Dim ByteConverter As New UnicodeEncoding() 'Create byte arrays to hold original, encrypted, and decrypted data. Dim dataToEncrypt As Byte() = ByteConverter.GetBytes("Data to Encrypt") Dim encryptedData() As Byte Dim decryptedData() As Byte 'Create a new instance of RSACryptoServiceProvider to generate 'public and private key data. Dim RSA As New RSACryptoServiceProvider() 'Pass the data to ENCRYPT, the public key information '(using RSACryptoServiceProvider.ExportParameters(false) , 'and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(False), False) 'Pass the data to DECRYPT, the private key information '(using RSACryptoServiceProvider.ExportParameters(true) , 'and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, RSA.ExportParameters(True), False) 'Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)) Catch e As ArgumentNullException 'Catch this exception in case the encryption did 'not succeed. Console.WriteLine("Encryption failed.") End Try End Sub Public Shared Function RSAEncrypt(ByVal DataToEncrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte() Try 'Create a new instance of RSACryptoServiceProvider. Dim RSA As New RSACryptoServiceProvider() 'Import the RSA Key information. This only needs 'toinclude the public key information. RSA.ImportParameters(RSAKeyInfo) 'Encrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSA.Encrypt(DataToEncrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.Message) Return Nothing End Try End Function Public Shared Function RSADecrypt(ByVal DataToDecrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte() Try 'Create a new instance of RSACryptoServiceProvider. Dim RSA As New RSACryptoServiceProvider() 'Import the RSA Key information. This needs 'to include the private key information. RSA.ImportParameters(RSAKeyInfo) 'Decrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSA.Decrypt(DataToDecrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.ToString()) Return Nothing End Try End Function End Class
using System; using System.Security.Cryptography; using System.Text; class RSACSPSample { static void Main() { try { //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding ByteConverter = new UnicodeEncoding(); //Create byte arrays to hold original, encrypted, and decrypted data. byte[] dataToEncrypt = ByteConverter.GetBytes("Data to Encrypt"); byte[] encryptedData; byte[] decryptedData; //Create a new instance of RSACryptoServiceProvider to generate //public and private key data. RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //Pass the data to ENCRYPT, the public key information //(using RSACryptoServiceProvider.ExportParameters(false) , //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt,RSA.ExportParameters(false), false); //Pass the data to DECRYPT, the private key information //(using RSACryptoServiceProvider.ExportParameters(true) , //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData,RSA.ExportParameters(true), false); //Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)); } catch(ArgumentNullException) { //Catch this exception in case the encryption did //not succeed. Console.WriteLine("Encryption failed."); } } static public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //Import the RSA Key information. This only needs //toinclude the public key information. RSA.ImportParameters(RSAKeyInfo); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSA.Encrypt(DataToEncrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.Message); return null; } } static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo,bool DoOAEPPadding) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //Import the RSA Key information. This needs //to include the private key information. RSA.ImportParameters(RSAKeyInfo); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSA.Decrypt(DataToDecrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.ToString()); return null; } } }
using namespace System; using namespace System::Security::Cryptography; using namespace System::Text; array<Byte>^ RSAEncrypt( array<Byte>^DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding ) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider^ RSA = gcnew RSACryptoServiceProvider; //Import the RSA Key information. This only needs //toinclude the public key information. RSA->ImportParameters( RSAKeyInfo ); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSA->Encrypt( DataToEncrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e->Message ); return nullptr; } } array<Byte>^ RSADecrypt( array<Byte>^DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding ) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider^ RSA = gcnew RSACryptoServiceProvider; //Import the RSA Key information. This needs //to include the private key information. RSA->ImportParameters( RSAKeyInfo ); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSA->Decrypt( DataToDecrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e ); return nullptr; } } int main() { try { //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding^ ByteConverter = gcnew UnicodeEncoding; //Create byte arrays to hold original, encrypted, and decrypted data. array<Byte>^dataToEncrypt = ByteConverter->GetBytes( "Data to Encrypt" ); array<Byte>^encryptedData; array<Byte>^decryptedData; //Create a new instance of RSACryptoServiceProvider to generate //public and private key data. RSACryptoServiceProvider^ RSA = gcnew RSACryptoServiceProvider; //Pass the data to ENCRYPT, the public key information //(using RSACryptoServiceProvider.ExportParameters(false), //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt( dataToEncrypt, RSA->ExportParameters( false ), false ); //Pass the data to DECRYPT, the private key information //(using RSACryptoServiceProvider.ExportParameters(true), //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt( encryptedData, RSA->ExportParameters( true ), false ); //Display the decrypted plaintext to the console. Console::WriteLine( "Decrypted plaintext: {0}", ByteConverter->GetString( decryptedData ) ); } catch ( ArgumentNullException^ ) { //Catch this exception in case the encryption did //not succeed. Console::WriteLine( "Encryption failed." ); } }
import System.*; import System.Security.Cryptography.*; import System.Text.*; class RSACSPSample { public static void main(String[] args) { try { // Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding byteConverter = new UnicodeEncoding(); // Create byte arrays to hold original, encrypted, // and decrypted data. ubyte dataToEncrypt[] = byteConverter.GetBytes("Data to Encrypt"); ubyte encryptedData[]; ubyte decryptedData[]; // Create a new instance of RSACryptoServiceProvider to generate // public and private key data. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // Pass the data to ENCRYPT, the public key information // (using RSACryptoServiceProvider.ExportParameters(false) , // and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, rsa.ExportParameters(false), false); // Pass the data to DECRYPT, the private key information //(using RSACryptoServiceProvider.ExportParameters(true) , // and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, rsa.ExportParameters(true), false); // Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", byteConverter.GetString(decryptedData)); } catch (ArgumentNullException exp) { //Catch this exception in case the encryption did //not succeed. Console.WriteLine("Encryption failed."); } } //main public static ubyte[] RSAEncrypt(ubyte dataToEncrypt[], RSAParameters rsaKeyInfo, boolean doOaepPadding) { try { // Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // Import the rsa Key information. This only needs // toinclude the public key information. rsa.ImportParameters(rsaKeyInfo); // Encrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsa.Encrypt(dataToEncrypt, doOaepPadding) ; } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.get_Message()); return null ; } } //RSAEncrypt public static ubyte[] RSADecrypt(ubyte dataToDecrypt[], RSAParameters rsaKeyInfo, boolean doOaepPadding) { try { // Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // Import the rsa Key information. This needs // to include the private key information. rsa.ImportParameters(rsaKeyInfo); // Decrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsa.Decrypt(dataToDecrypt, doOaepPadding) ; } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.ToString()); return null ; } } //RSADecrypt } //RSACSPSample
RSACryptoServiceProvider を使用して作成したキー情報を RSAParameters オブジェクトにエクスポートするコード例を次に示します。
Try 'Create a new RSACryptoServiceProvider object. Dim RSA As New RSACryptoServiceProvider() 'Export the key information to an RSAParameters object. 'Pass false to export the public key information or pass 'true to export public and private key information. Dim RSAParams As RSAParameters = RSA.ExportParameters(False) Catch e As CryptographicException 'Catch this exception in case the encryption did 'not succeed. Console.WriteLine(e.Message) End Try
try { //Create a new RSACryptoServiceProvider object. RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //Export the key information to an RSAParameters object. //Pass false to export the public key information or pass //true to export public and private key information. RSAParameters RSAParams = RSA.ExportParameters(false); } catch(CryptographicException e) { //Catch this exception in case the encryption did //not succeed. Console.WriteLine(e.Message); }
try { //Create a new RSACryptoServiceProvider Object*. RSACryptoServiceProvider^ RSA = gcnew RSACryptoServiceProvider; //Export the key information to an RSAParameters object. //Pass false to export the public key information or pass //true to export public and private key information. RSAParameters RSAParams = RSA->ExportParameters( false ); } catch ( CryptographicException^ e ) { //Catch this exception in case the encryption did //not succeed. Console::WriteLine( e->Message ); }
try { // Create a new RSACryptoServiceProvider object. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // Export the key information to an RSAParameters object. // Pass false to export the public key information or pass // true to export public and private key information. RSAParameters rsaParams = rsa.ExportParameters(false); } catch (CryptographicException e) { // Catch this exception in case the encryption did // not succeed. Console.WriteLine(e.get_Message()); }

System.Security.Cryptography.AsymmetricAlgorithm
System.Security.Cryptography.RSA
System.Security.Cryptography.RSACryptoServiceProvider


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


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



このコンストラクタは、セッション キーの暗号化に適した Exchange キー ペアを作成し、セッション キーを安全に格納して他のユーザーと交換できるようにします。生成されたキーは、アンマネージ CAPI (Microsoft Cryptographic API) で使用する AT_KEYEXCHANGE 値を使用して生成されたキーに対応します。

RSACryptoServiceProvider クラスを使用して、文字列をバイト配列に暗号化し、そのバイトを文字列に復号化するコード例を次に示します。
Imports System Imports System.Security.Cryptography Imports System.Text _ Class RSACSPSample Shared Sub Main() Try 'Create a UnicodeEncoder to convert between byte array and string. Dim ByteConverter As New UnicodeEncoding() 'Create byte arrays to hold original, encrypted, and decrypted data. Dim dataToEncrypt As Byte() = ByteConverter.GetBytes("Data to Encrypt") Dim encryptedData() As Byte Dim decryptedData() As Byte 'Create a new instance of RSACryptoServiceProvider to generate 'public and private key data. Dim RSA As New RSACryptoServiceProvider() 'Pass the data to ENCRYPT, the public key information '(using RSACryptoServiceProvider.ExportParameters(false) , 'and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, RSA.ExportParameters(False), False) 'Pass the data to DECRYPT, the private key information '(using RSACryptoServiceProvider.ExportParameters(true) , 'and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, RSA.ExportParameters(True), False) 'Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)) Catch e As ArgumentNullException 'Catch this exception in case the encryption did 'not succeed. Console.WriteLine("Encryption failed.") End Try End Sub Public Shared Function RSAEncrypt(ByVal DataToEncrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte() Try 'Create a new instance of RSACryptoServiceProvider. Dim RSA As New RSACryptoServiceProvider() 'Import the RSA Key information. This only needs 'toinclude the public key information. RSA.ImportParameters(RSAKeyInfo) 'Encrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSA.Encrypt(DataToEncrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.Message) Return Nothing End Try End Function Public Shared Function RSADecrypt(ByVal DataToDecrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte() Try 'Create a new instance of RSACryptoServiceProvider. Dim RSA As New RSACryptoServiceProvider() 'Import the RSA Key information. This needs 'to include the private key information. RSA.ImportParameters(RSAKeyInfo) 'Decrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSA.Decrypt(DataToDecrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.ToString()) Return Nothing End Try End Function End Class
using System; using System.Security.Cryptography; using System.Text; class RSACSPSample { static void Main() { try { //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding ByteConverter = new UnicodeEncoding(); //Create byte arrays to hold original, encrypted, and decrypted data. byte[] dataToEncrypt = ByteConverter.GetBytes("Data to Encrypt"); byte[] encryptedData; byte[] decryptedData; //Create a new instance of RSACryptoServiceProvider to generate //public and private key data. RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //Pass the data to ENCRYPT, the public key information //(using RSACryptoServiceProvider.ExportParameters(false) , //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt,RSA.ExportParameters(false), false); //Pass the data to DECRYPT, the private key information //(using RSACryptoServiceProvider.ExportParameters(true) , //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData,RSA.ExportParameters(true), false); //Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)); } catch(ArgumentNullException) { //Catch this exception in case the encryption did //not succeed. Console.WriteLine("Encryption failed."); } } static public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //Import the RSA Key information. This only needs //toinclude the public key information. RSA.ImportParameters(RSAKeyInfo); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSA.Encrypt(DataToEncrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.Message); return null; } } static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo,bool DoOAEPPadding) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(); //Import the RSA Key information. This needs //to include the private key information. RSA.ImportParameters(RSAKeyInfo); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSA.Decrypt(DataToDecrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.ToString()); return null; } } }
using namespace System; using namespace System::Security::Cryptography; using namespace System::Text; array<Byte>^ RSAEncrypt( array<Byte>^DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding ) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider^ RSA = gcnew RSACryptoServiceProvider; //Import the RSA Key information. This only needs //toinclude the public key information. RSA->ImportParameters( RSAKeyInfo ); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSA->Encrypt( DataToEncrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e->Message ); return nullptr; } } array<Byte>^ RSADecrypt( array<Byte>^DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding ) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider^ RSA = gcnew RSACryptoServiceProvider; //Import the RSA Key information. This needs //to include the private key information. RSA->ImportParameters( RSAKeyInfo ); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSA->Decrypt( DataToDecrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e ); return nullptr; } } int main() { try { //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding^ ByteConverter = gcnew UnicodeEncoding; //Create byte arrays to hold original, encrypted, and decrypted data. array<Byte>^dataToEncrypt = ByteConverter->GetBytes( "Data to Encrypt" ); array<Byte>^encryptedData; array<Byte>^decryptedData; //Create a new instance of RSACryptoServiceProvider to generate //public and private key data. RSACryptoServiceProvider^ RSA = gcnew RSACryptoServiceProvider; //Pass the data to ENCRYPT, the public key information //(using RSACryptoServiceProvider.ExportParameters(false), //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt( dataToEncrypt, RSA->ExportParameters( false ), false ); //Pass the data to DECRYPT, the private key information //(using RSACryptoServiceProvider.ExportParameters(true), //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt( encryptedData, RSA->ExportParameters( true ), false ); //Display the decrypted plaintext to the console. Console::WriteLine( "Decrypted plaintext: {0}", ByteConverter->GetString( decryptedData ) ); } catch ( ArgumentNullException^ ) { //Catch this exception in case the encryption did //not succeed. Console::WriteLine( "Encryption failed." ); } }
import System.*; import System.Security.Cryptography.*; import System.Text.*; class RSACSPSample { public static void main(String[] args) { try { // Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding byteConverter = new UnicodeEncoding(); // Create byte arrays to hold original, encrypted, // and decrypted data. ubyte dataToEncrypt[] = byteConverter.GetBytes("Data to Encrypt"); ubyte encryptedData[]; ubyte decryptedData[]; // Create a new instance of RSACryptoServiceProvider to generate // public and private key data. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // Pass the data to ENCRYPT, the public key information // (using RSACryptoServiceProvider.ExportParameters(false) , // and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, rsa.ExportParameters(false), false); // Pass the data to DECRYPT, the private key information //(using RSACryptoServiceProvider.ExportParameters(true) , // and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, rsa.ExportParameters(true), false); // Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", byteConverter.GetString(decryptedData)); } catch (ArgumentNullException exp) { //Catch this exception in case the encryption did //not succeed. Console.WriteLine("Encryption failed."); } } //main public static ubyte[] RSAEncrypt(ubyte dataToEncrypt[], RSAParameters rsaKeyInfo, boolean doOaepPadding) { try { // Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // Import the rsa Key information. This only needs // toinclude the public key information. rsa.ImportParameters(rsaKeyInfo); // Encrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsa.Encrypt(dataToEncrypt, doOaepPadding) ; } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.get_Message()); return null ; } } //RSAEncrypt public static ubyte[] RSADecrypt(ubyte dataToDecrypt[], RSAParameters rsaKeyInfo, boolean doOaepPadding) { try { // Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider rsa = new RSACryptoServiceProvider(); // Import the rsa Key information. This needs // to include the private key information. rsa.ImportParameters(rsaKeyInfo); // Decrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsa.Decrypt(dataToDecrypt, doOaepPadding) ; } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.ToString()); return null ; } } //RSADecrypt } //RSACSPSample


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


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

- parameters
暗号サービス プロバイダ (CSP) に渡すパラメータ。


このコンストラクタは、parameters パラメータの KeyContainerName フィールドを使用して指定したキー コンテナを作成または再利用します。
既定では、このコンストラクタは、セッション キーの暗号化に適した Exchange キー ペアを作成し、セッション キーを安全に格納して他のユーザーと交換できるようにします。生成されたキーは、アンマネージ CAPI (Microsoft Cryptographic API) で使用する AT_KEYEXCHANGE 値を使用して生成されたキーに対応します。
(デジタル署名済みの) メッセージまたはファイルの認証に適した Signature キー ペアを作成するには、parameters パラメータの KeyNumber フィールドを Signature 値に設定します。この種類のキーは、CAPI で使用される AT_SIGNATURE 値に対応します。
Exchange 値を指定して RSACryptoServiceProvider オブジェクトを作成し、Signature 値を指定して別の RSACryptoServiceProvider オブジェクトを作成する場合に、両方のオブジェクトに同じキー コンテナ名が指定されていると、両方のキーが 1 つのコンテナに格納されます。
RSACryptoServiceProvider クラスを使用して厳密な名前の署名と互換性のあるキーを作成するには、Signature キー ペアを作成する必要があります。

RSACryptoServiceProvider オブジェクトを作成し、新しいキーを生成して、このキーをキー コンテナ内に格納するコード例を次に示します。
Imports System.Security.Cryptography Imports System.Text Module RSACSPExample Sub Main() Try Dim KeyContainerName As String = "MyKeyContainer" 'Create a new key and persist it in 'the key container. RSAPersistKeyInCSP(KeyContainerName) 'Create a UnicodeEncoder to convert between byte array and string. Dim ByteConverter As New UnicodeEncoding 'Create byte arrays to hold original, encrypted, and decrypted data. Dim dataToEncrypt As Byte() = ByteConverter.GetBytes("Data to Encrypt") Dim encryptedData() As Byte Dim decryptedData() As Byte 'Pass the data to ENCRYPT, the name of the key container, 'and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, KeyContainerName, False) 'Pass the data to DECRYPT, the name of the key container, 'and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, KeyContainerName, False) 'Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)) RSADeleteKeyInCSP(KeyContainerName) Catch e As ArgumentNullException 'Catch this exception in case the encryption did 'not succeed. Console.WriteLine("Encryption failed.") End Try End Sub Sub RSAPersistKeyInCSP(ByVal ContainerName As String) Try ' Create a new instance of CspParameters. Pass ' 13 to specify a DSA container or 1 to specify ' an RSA container. The default is 1. Dim cspParams As New CspParameters ' Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName 'Create a new instance of RSACryptoServiceProvider to generate 'a new key pair. Pass the CspParameters class to persist the 'key in the container. Dim RSAalg As New RSACryptoServiceProvider(cspParams) 'Indicate that the key was persisted. Console.WriteLine("The RSA key was persisted in the container, ""{0}"".", ContainerName) Catch e As CryptographicException Console.WriteLine(e.Message) End Try End Sub Sub RSADeleteKeyInCSP(ByVal ContainerName As String) Try ' Create a new instance of CspParameters. Pass ' 13 to specify a DSA container or 1 to specify ' an RSA container. The default is 1. Dim cspParams As New CspParameters ' Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName 'Create a new instance of RSACryptoServiceProvider. 'Pass the CspParameters class to use the 'key in the container. Dim RSAalg As New RSACryptoServiceProvider(cspParams) 'Delete the key entry in the container. RSAalg.PersistKeyInCsp = False 'Call Clear to release resources and delete the key from the container. RSAalg.Clear() 'Indicate that the key was persisted. Console.WriteLine("The RSA key was deleted from the container, ""{0}"".", ContainerName) Catch e As CryptographicException Console.WriteLine(e.Message) End Try End Sub Function RSAEncrypt(ByVal DataToEncrypt() As Byte, ByVal ContainerName As String, ByVal DoOAEPPadding As Boolean) As Byte() Try ' Create a new instance of CspParameters. Pass ' 13 to specify a DSA container or 1 to specify ' an RSA container. The default is 1. Dim cspParams As New CspParameters ' Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName 'Create a new instance of RSACryptoServiceProvider. 'Pass the CspParameters class to use the key 'from the key in the container. Dim RSAalg As New RSACryptoServiceProvider(cspParams) 'Encrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSAalg.Encrypt(DataToEncrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.Message) Return Nothing End Try End Function Function RSADecrypt(ByVal DataToDecrypt() As Byte, ByVal ContainerName As String, ByVal DoOAEPPadding As Boolean) As Byte() Try ' Create a new instance of CspParameters. Pass ' 13 to specify a DSA container or 1 to specify ' an RSA container. The default is 1. Dim cspParams As New CspParameters ' Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName 'Create a new instance of RSACryptoServiceProvider. 'Pass the CspParameters class to use the key 'from the key in the container. Dim RSAalg As New RSACryptoServiceProvider(cspParams) 'Decrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSAalg.Decrypt(DataToDecrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.ToString()) Return Nothing End Try End Function End Module
using System; using System.Security.Cryptography; using System.Text; class RSACSPSample { static void Main() { try { string KeyContainerName = "MyKeyContainer"; //Create a new key and persist it in //the key container. RSAPersistKeyInCSP(KeyContainerName); //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding ByteConverter = new UnicodeEncoding(); //Create byte arrays to hold original, encrypted, and decrypted data. byte[] dataToEncrypt = ByteConverter.GetBytes("Data to Encrypt"); byte[] encryptedData; byte[] decryptedData; //Pass the data to ENCRYPT, the name of the key container , //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt,KeyContainerName, false); //Pass the data to DECRYPT, the name of the key container , //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData,KeyContainerName, false); //Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)); RSADeleteKeyInCSP(KeyContainerName); } catch(ArgumentNullException) { //Catch this exception in case the encryption did //not succeed. Console.WriteLine("Encryption failed."); } } public static void RSAPersistKeyInCSP(string ContainerName) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider to generate //a new key pair. Pass the CspParameters class to persist the //key in the container. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams); //Indicate that the key was persisted. Console.WriteLine("The RSA key was persisted in the container, \"{0}\".", ContainerName); } catch(CryptographicException e) { Console.WriteLine(e.Message); } } public static void RSADeleteKeyInCSP(string ContainerName) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider. //Pass the CspParameters class to use the //key in the container. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams); //Delete the key entry in the container. RSAalg.PersistKeyInCsp = false; //Call Clear to release resources and delete the key from the container. RSAalg.Clear(); //Indicate that the key was persisted. Console.WriteLine("The RSA key was deleted from the container, \"{0}\".", ContainerName); } catch(CryptographicException e) { Console.WriteLine(e.Message); } } static public byte[] RSAEncrypt(byte[] DataToEncrypt, string ContainerName, bool DoOAEPPadding) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider. //Pass the CspParameters class to use the key //from the key in the container. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg.Encrypt(DataToEncrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.Message); return null; } } static public byte[] RSADecrypt(byte[] DataToDecrypt, string ContainerName, bool DoOAEPPadding) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider. //Pass the CspParameters class to use the key //from the key in the container. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg.Decrypt(DataToDecrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.ToString()); return null; } } }
using namespace System; using namespace System::Security::Cryptography; using namespace System::Text; void RSAPersistKeyInCSP( String^ ContainerName ) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters^ cspParams = gcnew CspParameters; // Specify the container name using the passed variable. cspParams->KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider to generate //a new key pair. Pass the CspParameters class to persist the //key in the container. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( cspParams ); //Indicate that the key was persisted. Console::WriteLine( "The RSA key was persisted in the container, \"{0}\".", ContainerName ); } catch ( CryptographicException^ e ) { Console::WriteLine( e->Message ); } } void RSADeleteKeyInCSP( String^ ContainerName ) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters^ cspParams = gcnew CspParameters; // Specify the container name using the passed variable. cspParams->KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider. //Pass the CspParameters class to use the //key in the container. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( cspParams ); //Delete the key entry in the container. RSAalg->PersistKeyInCsp = false; //Call Clear to release resources and delete the key from the container. RSAalg->Clear(); //Indicate that the key was persisted. Console::WriteLine( "The RSA key was deleted from the container, \"{0}\".", ContainerName ); } catch ( CryptographicException^ e ) { Console::WriteLine( e->Message ); } } array<Byte>^ RSAEncrypt( array<Byte>^DataToEncrypt, String^ ContainerName, bool DoOAEPPadding ) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters^ cspParams = gcnew CspParameters; // Specify the container name using the passed variable. cspParams->KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider. //Pass the CspParameters class to use the key //from the key in the container. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( cspParams ); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg->Encrypt( DataToEncrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e->Message ); return nullptr; } } array<Byte>^ RSADecrypt( array<Byte>^DataToDecrypt, String^ ContainerName, bool DoOAEPPadding ) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters^ cspParams = gcnew CspParameters; // Specify the container name using the passed variable. cspParams->KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider. //Pass the CspParameters class to use the key //from the key in the container. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( cspParams ); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg->Decrypt( DataToDecrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e ); return nullptr; } } int main() { try { String^ KeyContainerName = "MyKeyContainer"; //Create a new key and persist it in //the key container. RSAPersistKeyInCSP( KeyContainerName ); //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding^ ByteConverter = gcnew UnicodeEncoding; //Create byte arrays to hold original, encrypted, and decrypted data. array<Byte>^dataToEncrypt = ByteConverter->GetBytes( "Data to Encrypt" ); array<Byte>^encryptedData; array<Byte>^decryptedData; //Pass the data to ENCRYPT, the name of the key container, //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt( dataToEncrypt, KeyContainerName, false ); //Pass the data to DECRYPT, the name of the key container, //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt( encryptedData, KeyContainerName, false ); //Display the decrypted plaintext to the console. Console::WriteLine( "Decrypted plaintext: {0}", ByteConverter->GetString( decryptedData ) ); RSADeleteKeyInCSP( KeyContainerName ); } catch ( ArgumentNullException^ ) { //Catch this exception in case the encryption did //not succeed. Console::WriteLine( "Encryption failed." ); } }
import System.*; import System.Security.Cryptography.*; import System.Text.*; class RSACSPSample { public static void main(String[] args) { try { String keyContainerName = "MyKeyContainer"; // Create a new key and persist it in // the key container. RSAPersistKeyInCSP(keyContainerName); // Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding byteConverter = new UnicodeEncoding(); // Create byte arrays to hold original, encrypted, and decrypted // data. ubyte dataToEncrypt[] = byteConverter.GetBytes("Data to Encrypt"); ubyte encryptedData[]; ubyte decryptedData[]; // Pass the data to ENCRYPT, the name of the key container , // and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, keyContainerName, false); // Pass the data to DECRYPT, the name of the key container , // and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, keyContainerName, false); // Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", byteConverter.GetString(decryptedData)); RSADeleteKeyInCSP(keyContainerName); } catch (ArgumentNullException exp) { // Catch this exception in case the encryption did // not succeed. Console.WriteLine("Encryption failed."); } } //main public static void RSAPersistKeyInCSP(String containerName) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = containerName; // Create a new instance of RSACryptoServiceProvider to generate // a new key pair. Pass the CspParameters class to persist the // key in the container. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(cspParams); // Indicate that the key was persisted. Console.WriteLine("The RSA key was persisted in the container, " + "\"{0}\".", containerName); } catch (CryptographicException e) { Console.WriteLine(e.get_Message()); } } //RSAPersistKeyInCSP public static void RSADeleteKeyInCSP(String containerName) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = containerName; // Create a new instance of RSACryptoServiceProvider. // Pass the CspParameters class to use the // key in the container. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(cspParams); // Delete the key entry in the container. rsaAlg.set_PersistKeyInCsp(false); // Call Clear to release resources and delete the key from the // container. rsaAlg.Clear(); // Indicate that the key was persisted. Console.WriteLine("The RSA key was deleted from the container, " + "\"{0}\".", containerName); } catch (CryptographicException e) { Console.WriteLine(e.get_Message()); } } //RSADeleteKeyInCSP public static ubyte[] RSAEncrypt(ubyte[] dataToEncrypt, String containerName, boolean doOAEPPadding) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = containerName; // Create a new instance of RSACryptoServiceProvider. // Pass the CspParameters class to use the key // from the key in the container. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(cspParams); // Encrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsaAlg.Encrypt(dataToEncrypt, doOAEPPadding); } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.get_Message()); return null; } } //RSAEncrypt public static ubyte[] RSADecrypt(ubyte dataToDecrypt[], String containerName, boolean doOAEPPadding) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = containerName; // Create a new instance of RSACryptoServiceProvider. // Pass the CspParameters class to use the key // from the key in the container. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(cspParams); // Decrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsaAlg.Decrypt(dataToDecrypt, doOAEPPadding); } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.ToString()); return null; } } //RSADecrypt } //RSACSPSample


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


RSACryptoServiceProvider コンストラクタ (Int32, CspParameters)
アセンブリ: mscorlib (mscorlib.dll 内)

Dim dwKeySize As Integer Dim parameters As CspParameters Dim instance As New RSACryptoServiceProvider(dwKeySize, parameters)
- parameters
暗号サービス プロバイダ (CSP) に渡すパラメータ。


このコンストラクタは、parameters パラメータの KeyContainerName フィールドを使用して指定したキー コンテナを作成または再利用します。
既定では、このコンストラクタは、セッション キーの暗号化に適した Exchange キー ペアを作成し、セッション キーを安全に格納して他のユーザーと交換できるようにします。生成されたキーは、アンマネージ CAPI (Microsoft Cryptographic API) で使用する AT_KEYEXCHANGE 値を使用して生成されたキーに対応します。
(デジタル署名済みの) メッセージまたはファイルの認証に適した Signature キー ペアを作成するには、parameters パラメータの KeyNumber フィールドの値を Signature に設定します。この種類のキーは、CAPI で使用される AT_SIGNATURE 値に対応します。
Exchange 値を指定して RSACryptoServiceProvider オブジェクトを作成し、Signature 値を指定して別の RSACryptoServiceProvider オブジェクトを作成する場合に、両方のオブジェクトに同じキー コンテナ名が指定されていると、両方のキーが 1 つのコンテナに格納されます。
RSACryptoServiceProvider クラスを使用して厳密な名前の署名と互換性のあるキーを作成するには、Signature キー ペアを作成する必要があります。

RSACryptoServiceProvider を作成し、新しいキーを生成して、このキーをキー コンテナ内に格納するコード例を次に示します。
Imports System.Security.Cryptography Imports System.Text Module RSACSPExample Sub Main() Try Dim KeyContainerName As String = "MyKeyContainer" 'Create a new key and persist it in 'the key container. RSAPersistKeyInCSP(KeyContainerName) 'Create a UnicodeEncoder to convert between byte array and string. Dim ByteConverter As New UnicodeEncoding 'Create byte arrays to hold original, encrypted, and decrypted data. Dim dataToEncrypt As Byte() = ByteConverter.GetBytes("Data to Encrypt") Dim encryptedData() As Byte Dim decryptedData() As Byte 'Pass the data to ENCRYPT, the name of the key container, 'and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, KeyContainerName, False) 'Pass the data to DECRYPT, the name of the key container, 'and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, KeyContainerName, False) 'Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)) RSADeleteKeyInCSP(KeyContainerName) Catch e As ArgumentNullException 'Catch this exception in case the encryption did 'not succeed. Console.WriteLine("Encryption failed.") End Try End Sub Sub RSAPersistKeyInCSP(ByVal ContainerName As String) Try ' Create a new instance of CspParameters. Pass ' 13 to specify a DSA container or 1 to specify ' an RSA container. The default is 1. Dim cspParams As New CspParameters ' Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName 'Create a new instance of RSACryptoServiceProvider to generate 'a new key pair. Pass the CspParameters class to persist the 'key in the container. Dim RSAalg As New RSACryptoServiceProvider(2048, cspParams) 'Indicate that the key was persisted. Console.WriteLine("The RSA key with a key-size of {0} was persisted in the container, ""{1}"".", _ RSAalg.KeySize, ContainerName) Catch e As CryptographicException Console.WriteLine(e.Message) End Try End Sub Sub RSADeleteKeyInCSP(ByVal ContainerName As String) Try ' Create a new instance of CspParameters. Pass ' 13 to specify a DSA container or 1 to specify ' an RSA container. The default is 1. Dim cspParams As New CspParameters ' Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName 'Create a new instance of RSACryptoServiceProvider. 'Pass the CspParameters class to use the 'key in the container. Dim RSAalg As New RSACryptoServiceProvider(cspParams) 'Delete the key entry in the container. RSAalg.PersistKeyInCsp = False 'Call Clear to release resources and delete the key from the container. RSAalg.Clear() 'Indicate that the key was persisted. Console.WriteLine("The RSA key was deleted from the container, ""{0}"".", ContainerName) Catch e As CryptographicException Console.WriteLine(e.Message) End Try End Sub Function RSAEncrypt(ByVal DataToEncrypt() As Byte, ByVal ContainerName As String, ByVal DoOAEPPadding As Boolean) As Byte() Try ' Create a new instance of CspParameters. Pass ' 13 to specify a DSA container or 1 to specify ' an RSA container. The default is 1. Dim cspParams As New CspParameters ' Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName 'Create a new instance of RSACryptoServiceProvider. 'Pass the CspParameters class to use the key 'from the key in the container. Dim RSAalg As New RSACryptoServiceProvider(cspParams) 'Encrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSAalg.Encrypt(DataToEncrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.Message) Return Nothing End Try End Function Function RSADecrypt(ByVal DataToDecrypt() As Byte, ByVal ContainerName As String, ByVal DoOAEPPadding As Boolean) As Byte() Try ' Create a new instance of CspParameters. Pass ' 13 to specify a DSA container or 1 to specify ' an RSA container. The default is 1. Dim cspParams As New CspParameters ' Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName 'Create a new instance of RSACryptoServiceProvider. 'Pass the CspParameters class to use the key 'from the key in the container. Dim RSAalg As New RSACryptoServiceProvider(cspParams) 'Decrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSAalg.Decrypt(DataToDecrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.ToString()) Return Nothing End Try End Function End Module
using System; using System.Security.Cryptography; using System.Text; class RSACSPSample { static void Main() { try { string KeyContainerName = "MyKeyContainer"; //Create a new key and persist it in //the key container. RSAPersistKeyInCSP(KeyContainerName); //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding ByteConverter = new UnicodeEncoding(); //Create byte arrays to hold original, encrypted, and decrypted data. byte[] dataToEncrypt = ByteConverter.GetBytes("Data to Encrypt"); byte[] encryptedData; byte[] decryptedData; //Pass the data to ENCRYPT, the name of the key container , //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt,KeyContainerName, false); //Pass the data to DECRYPT, the name of the key container , //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData,KeyContainerName, false); //Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)); RSADeleteKeyInCSP(KeyContainerName); } catch(ArgumentNullException) { //Catch this exception in case the encryption did //not succeed. Console.WriteLine("Encryption failed."); } } public static void RSAPersistKeyInCSP(string ContainerName) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider to generate //a new key pair. Pass the CspParameters class to persist the //key in the container. Pass an intger of 2048 to specify the //key-size. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider( 2048, cspParams); //Indicate that the key was persisted. Console.WriteLine("The RSA key with a key-size of {0} was persisted in the container, \"{1}\".", RSAalg.KeySize , ContainerName); } catch(CryptographicException e) { Console.WriteLine(e.Message); } } public static void RSADeleteKeyInCSP(string ContainerName) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName; //Create a new instance of DSACryptoServiceProvider. //Pass the CspParameters class to use the //key in the container. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams); //Delete the key entry in the container. RSAalg.PersistKeyInCsp = false; //Call Clear to release resources and delete the key from the container. RSAalg.Clear(); //Indicate that the key was persisted. Console.WriteLine("The RSA key was deleted from the container, \"{0}\".", ContainerName); } catch(CryptographicException e) { Console.WriteLine(e.Message); } } static public byte[] RSAEncrypt(byte[] DataToEncrypt, string ContainerName, bool DoOAEPPadding) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName; //Create a new instance of DSACryptoServiceProvider. //Pass the CspParameters class to use the key //from the key in the container. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg.Encrypt(DataToEncrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.Message); return null; } } static public byte[] RSADecrypt(byte[] DataToDecrypt, string ContainerName, bool DoOAEPPadding) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = ContainerName; //Create a new instance of DSACryptoServiceProvider. //Pass the CspParameters class to use the key //from the key in the container. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(cspParams); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg.Decrypt(DataToDecrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.ToString()); return null; } } }
using namespace System; using namespace System::Security::Cryptography; using namespace System::Text; void RSAPersistKeyInCSP( String^ ContainerName ) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters^ cspParams = gcnew CspParameters; // Specify the container name using the passed variable. cspParams->KeyContainerName = ContainerName; //Create a new instance of RSACryptoServiceProvider to generate //a new key pair. Pass the CspParameters class to persist the //key in the container. Pass an intger of 2048 to specify the //key-size. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( 2048,cspParams ); //Indicate that the key was persisted. Console::WriteLine( "The RSA key with a key-size of {0} was persisted in the container, \"{1}\".", RSAalg->KeySize, ContainerName ); } catch ( CryptographicException^ e ) { Console::WriteLine( e->Message ); } } void RSADeleteKeyInCSP( String^ ContainerName ) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters^ cspParams = gcnew CspParameters; // Specify the container name using the passed variable. cspParams->KeyContainerName = ContainerName; //Create a new instance of DSACryptoServiceProvider. //Pass the CspParameters class to use the //key in the container. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( cspParams ); //Delete the key entry in the container. RSAalg->PersistKeyInCsp = false; //Call Clear to release resources and delete the key from the container. RSAalg->Clear(); //Indicate that the key was persisted. Console::WriteLine( "The RSA key was deleted from the container, \"{0}\".", ContainerName ); } catch ( CryptographicException^ e ) { Console::WriteLine( e->Message ); } } array<Byte>^ RSAEncrypt( array<Byte>^DataToEncrypt, String^ ContainerName, bool DoOAEPPadding ) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters^ cspParams = gcnew CspParameters; // Specify the container name using the passed variable. cspParams->KeyContainerName = ContainerName; //Create a new instance of DSACryptoServiceProvider. //Pass the CspParameters class to use the key //from the key in the container. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( cspParams ); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg->Encrypt( DataToEncrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e->Message ); return nullptr; } } array<Byte>^ RSADecrypt( array<Byte>^DataToDecrypt, String^ ContainerName, bool DoOAEPPadding ) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters^ cspParams = gcnew CspParameters; // Specify the container name using the passed variable. cspParams->KeyContainerName = ContainerName; //Create a new instance of DSACryptoServiceProvider. //Pass the CspParameters class to use the key //from the key in the container. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( cspParams ); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg->Decrypt( DataToDecrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e ); return nullptr; } } int main() { try { String^ KeyContainerName = "MyKeyContainer"; //Create a new key and persist it in //the key container. RSAPersistKeyInCSP( KeyContainerName ); //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding^ ByteConverter = gcnew UnicodeEncoding; //Create byte arrays to hold original, encrypted, and decrypted data. array<Byte>^dataToEncrypt = ByteConverter->GetBytes( "Data to Encrypt" ); array<Byte>^encryptedData; array<Byte>^decryptedData; //Pass the data to ENCRYPT, the name of the key container, //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt( dataToEncrypt, KeyContainerName, false ); //Pass the data to DECRYPT, the name of the key container, //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt( encryptedData, KeyContainerName, false ); //Display the decrypted plaintext to the console. Console::WriteLine( "Decrypted plaintext: {0}", ByteConverter->GetString( decryptedData ) ); RSADeleteKeyInCSP( KeyContainerName ); } catch ( ArgumentNullException^ ) { //Catch this exception in case the encryption did //not succeed. Console::WriteLine( "Encryption failed." ); } }
import System.*; import System.Security.Cryptography.*; import System.Text.*; class RSACSPSample { public static void main(String[] args) { try { String keyContainerName = "MyKeyContainer"; // Create a new key and persist it in // the key container. RSAPersistKeyInCSP(keyContainerName); // Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding byteConverter = new UnicodeEncoding(); // Create byte arrays to hold original, encrypted, and decrypted // data. ubyte dataToEncrypt[] = byteConverter.GetBytes("Data to Encrypt"); ubyte encryptedData[]; ubyte decryptedData[]; // Pass the data to ENCRYPT, the name of the key container , // and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, keyContainerName, false); // Pass the data to DECRYPT, the name of the key container , // and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, keyContainerName, false); // Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", byteConverter.GetString(decryptedData)); RSADeleteKeyInCSP(keyContainerName); } catch (ArgumentNullException exp) { // Catch this exception in case the encryption did // not succeed. Console.WriteLine("Encryption failed."); } } //main public static void RSAPersistKeyInCSP(String containerName) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = containerName; // Create a new instance of RSACryptoServiceProvider to generate // a new key pair. Pass the CspParameters class to persist the // key in the container. Pass an intger of 2048 to specify the // key-size. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(2048, cspParams); // Indicate that the key was persisted. Console.WriteLine("The RSA key with a key-size of {0} was " + "persisted in the container, \"{1}\".", System.Convert.ToString(rsaAlg.get_KeySize()), containerName); } catch (CryptographicException e) { Console.WriteLine(e.get_Message()); } } //RSAPersistKeyInCSP public static void RSADeleteKeyInCSP(String containerName) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = containerName; // Create a new instance of DSACryptoServiceProvider. // Pass the CspParameters class to use the // key in the container. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(cspParams); // Delete the key entry in the container. rsaAlg.set_PersistKeyInCsp(false); // Call Clear to release resources and delete the key from // the container. rsaAlg.Clear(); // Indicate that the key was persisted. Console.WriteLine("The RSA key was deleted from the container, " + "\"{0}\".", containerName); } catch (CryptographicException e) { Console.WriteLine(e.get_Message()); } } //RSADeleteKeyInCSP public static ubyte[] RSAEncrypt(ubyte dataToEncrypt[], String containerName, boolean doOAEPPadding) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = containerName; // Create a new instance of DSACryptoServiceProvider. // Pass the CspParameters class to use the key // from the key in the container. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(cspParams); // Encrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsaAlg.Encrypt(dataToEncrypt, doOAEPPadding); } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.get_Message()); return null; } } //RSAEncrypt public static ubyte[] RSADecrypt(ubyte[] dataToDecrypt, String containerName, boolean doOAEPPadding) { try { // Create a new instance of CspParameters. Pass // 13 to specify a DSA container or 1 to specify // an RSA container. The default is 1. CspParameters cspParams = new CspParameters(); // Specify the container name using the passed variable. cspParams.KeyContainerName = containerName; // Create a new instance of DSACryptoServiceProvider. // Pass the CspParameters class to use the key // from the key in the container. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(cspParams); // Decrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsaAlg.Decrypt(dataToDecrypt, doOAEPPadding); } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.ToString()); return null; } } //RSADecrypt } //RSACSPSample


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


RSACryptoServiceProvider コンストラクタ

名前 | 説明 |
---|---|
RSACryptoServiceProvider () | 既定のキーを使用して、RSACryptoServiceProvider クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
RSACryptoServiceProvider (CspParameters) | 指定したパラメータを使用して、RSACryptoServiceProvider クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
RSACryptoServiceProvider (Int32) | キーのサイズを指定して、RSACryptoServiceProvider クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |
RSACryptoServiceProvider (Int32, CspParameters) | キー サイズとパラメータを指定して、RSACryptoServiceProvider クラスの新しいインスタンスを初期化します。 .NET Compact Framework によってサポートされています。 |

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



このコンストラクタは、セッション キーの暗号化に適した Exchange キー ペアを作成し、セッション キーを安全に格納して他のユーザーと交換できるようにします。生成されたキーは、アンマネージ CAPI (Microsoft Cryptographic API) で使用する AT_KEYEXCHANGE 値を使用して生成されたキーに対応します。

RSACryptoServiceProvider を作成し、新しいキーを生成して、このキーをキー コンテナ内に格納するコード例を次に示します。
Imports System.Security.Cryptography Imports System.Text Module RSACSPExample Sub Main() Try 'Create a UnicodeEncoder to convert between byte array and string. Dim ByteConverter As New UnicodeEncoding 'Create byte arrays to hold original, encrypted, and decrypted data. Dim dataToEncrypt As Byte() = ByteConverter.GetBytes("Data to Encrypt") Dim encryptedData() As Byte Dim decryptedData() As Byte 'Create a new instance of RSACryptoServiceProvider to generate 'public and private key data. Pass an integer specifying a key- 'length of 2048. Dim RSAalg As New RSACryptoServiceProvider(2048) 'Display the key-legth to the console. Console.WriteLine("A new key pair of legth {0} was created", RSAalg.KeySize) 'Pass the data to ENCRYPT, the public key information '(using RSACryptoServiceProvider.ExportParameters(false) , 'and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, RSAalg.ExportParameters(False), False) 'Pass the data to DECRYPT, the private key information '(using RSACryptoServiceProvider.ExportParameters(true) , 'and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, RSAalg.ExportParameters(True), False) 'Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)) Catch e As ArgumentNullException 'Catch this exception in case the encryption did 'not succeed. Console.WriteLine("Encryption failed.") End Try End Sub 'Main Function RSAEncrypt(ByVal DataToEncrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte() Try 'Create a new instance of RSACryptoServiceProvider. Dim RSAalg As New RSACryptoServiceProvider 'Import the RSA Key information. This only needs 'toinclude the public key information. RSAalg.ImportParameters(RSAKeyInfo) 'Encrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSAalg.Encrypt(DataToEncrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.Message) Return Nothing End Try End Function Function RSADecrypt(ByVal DataToDecrypt() As Byte, ByVal RSAKeyInfo As RSAParameters, ByVal DoOAEPPadding As Boolean) As Byte() Try 'Create a new instance of RSACryptoServiceProvider. Dim RSAalg As New RSACryptoServiceProvider 'Import the RSA Key information. This needs 'to include the private key information. RSAalg.ImportParameters(RSAKeyInfo) 'Decrypt the passed byte array and specify OAEP padding. 'OAEP padding is only available on Microsoft Windows XP or 'later. Return RSAalg.Decrypt(DataToDecrypt, DoOAEPPadding) 'Catch and display a CryptographicException 'to the console. Catch e As CryptographicException Console.WriteLine(e.ToString()) Return Nothing End Try End Function End Module
using System; using System.Security.Cryptography; using System.Text; class RSACSPSample { static void Main() { try { //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding ByteConverter = new UnicodeEncoding(); //Create byte arrays to hold original, encrypted, and decrypted data. byte[] dataToEncrypt = ByteConverter.GetBytes("Data to Encrypt"); byte[] encryptedData; byte[] decryptedData; //Create a new instance of RSACryptoServiceProvider to generate //public and private key data. Pass an integer specifying a key- //length of 2048. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(2048); //Display the key-legth to the console. Console.WriteLine("A new key pair of legth {0} was created", RSAalg.KeySize); //Pass the data to ENCRYPT, the public key information //(using RSACryptoServiceProvider.ExportParameters(false) , //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt,RSAalg.ExportParameters(false), false); //Pass the data to DECRYPT, the private key information //(using RSACryptoServiceProvider.ExportParameters(true) , //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData,RSAalg.ExportParameters(true), false); //Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", ByteConverter.GetString(decryptedData)); } catch(ArgumentNullException) { //Catch this exception in case the encryption did //not succeed. Console.WriteLine("Encryption failed."); } } static public byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(); //Import the RSA Key information. This only needs //toinclude the public key information. RSAalg.ImportParameters(RSAKeyInfo); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg.Encrypt(DataToEncrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.Message); return null; } } static public byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo,bool DoOAEPPadding) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider RSAalg = new RSACryptoServiceProvider(); //Import the RSA Key information. This needs //to include the private key information. RSAalg.ImportParameters(RSAKeyInfo); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg.Decrypt(DataToDecrypt, DoOAEPPadding); } //Catch and display a CryptographicException //to the console. catch(CryptographicException e) { Console.WriteLine(e.ToString()); return null; } } }
using namespace System; using namespace System::Security::Cryptography; using namespace System::Text; array<Byte>^ RSAEncrypt( array<Byte>^DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding ) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider; //Import the RSA Key information. This only needs //toinclude the public key information. RSAalg->ImportParameters( RSAKeyInfo ); //Encrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg->Encrypt( DataToEncrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e->Message ); return nullptr; } } array<Byte>^ RSADecrypt( array<Byte>^DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding ) { try { //Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider; //Import the RSA Key information. This needs //to include the private key information. RSAalg->ImportParameters( RSAKeyInfo ); //Decrypt the passed byte array and specify OAEP padding. //OAEP padding is only available on Microsoft Windows XP or //later. return RSAalg->Decrypt( DataToDecrypt, DoOAEPPadding ); } //Catch and display a CryptographicException //to the console. catch ( CryptographicException^ e ) { Console::WriteLine( e ); return nullptr; } } int main() { try { //Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding^ ByteConverter = gcnew UnicodeEncoding; //Create byte arrays to hold original, encrypted, and decrypted data. array<Byte>^dataToEncrypt = ByteConverter->GetBytes( "Data to Encrypt" ); array<Byte>^encryptedData; array<Byte>^decryptedData; //Create a new instance of RSACryptoServiceProvider to generate //public and private key data. Pass an integer specifying a key- //length of 2048. RSACryptoServiceProvider^ RSAalg = gcnew RSACryptoServiceProvider( 2048 ); //Display the key-legth to the console. Console::WriteLine( "A new key pair of legth {0} was created", RSAalg->KeySize ); //Pass the data to ENCRYPT, the public key information //(using RSACryptoServiceProvider.ExportParameters(false), //and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt( dataToEncrypt, RSAalg->ExportParameters( false ), false ); //Pass the data to DECRYPT, the private key information //(using RSACryptoServiceProvider.ExportParameters(true), //and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt( encryptedData, RSAalg->ExportParameters( true ), false ); //Display the decrypted plaintext to the console. Console::WriteLine( "Decrypted plaintext: {0}", ByteConverter->GetString( decryptedData ) ); } catch ( ArgumentNullException^ ) { //Catch this exception in case the encryption did //not succeed. Console::WriteLine( "Encryption failed." ); } }
import System.*; import System.Security.Cryptography.*; import System.Text.*; class RSACSPSample { public static void main(String[] args) { try { // Create a UnicodeEncoder to convert between byte array and string. UnicodeEncoding byteConverter = new UnicodeEncoding(); // Create byte arrays to hold original, encrypted, and decrypted // data. ubyte dataToEncrypt[] = byteConverter.GetBytes("Data to Encrypt"); ubyte encryptedData[]; ubyte decryptedData[]; // Create a new instance of RSACryptoServiceProvider to generate // public and private key data. Pass an integer specifying a key- // length of 2048. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(2048); //Display the key-legth to the console. Console.WriteLine("A new key pair of legth {0} was created", System.Convert.ToString(rsaAlg.get_KeySize())); // Pass the data to ENCRYPT, the public key information // (using RSACryptoServiceProvider.ExportParameters(false) , // and a boolean flag specifying no OAEP padding. encryptedData = RSAEncrypt(dataToEncrypt, rsaAlg.ExportParameters(false), false); // Pass the data to DECRYPT, the private key information // (using RSACryptoServiceProvider.ExportParameters(true) , // and a boolean flag specifying no OAEP padding. decryptedData = RSADecrypt(encryptedData, rsaAlg.ExportParameters(true), false); //Display the decrypted plaintext to the console. Console.WriteLine("Decrypted plaintext: {0}", byteConverter.GetString(decryptedData)); } catch (ArgumentNullException exp) { // Catch this exception in case the encryption did // not succeed. Console.WriteLine("Encryption failed."); } } //main public static ubyte[] RSAEncrypt(ubyte dataToEncrypt[], RSAParameters rsaKeyInfo, boolean doOAEPPadding) { try { // Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(); // Import the RSA Key information. This only needs // toinclude the public key information. rsaAlg.ImportParameters(rsaKeyInfo); // Encrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsaAlg.Encrypt(dataToEncrypt, doOAEPPadding); } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.get_Message()); return null; } } //RSAEncrypt public static ubyte[] RSADecrypt(ubyte dataToDecrypt[], RSAParameters rsaKeyInfo, boolean doOAEPPadding) { try { // Create a new instance of RSACryptoServiceProvider. RSACryptoServiceProvider rsaAlg = new RSACryptoServiceProvider(); // Import the RSA Key information. This needs // to include the private key information. rsaAlg.ImportParameters(rsaKeyInfo); // Decrypt the passed byte array and specify OAEP padding. // OAEP padding is only available on Microsoft Windows XP or // later. return rsaAlg.Decrypt(dataToDecrypt, doOAEPPadding); } // Catch and display a CryptographicException // to the console. catch (CryptographicException e) { Console.WriteLine(e.ToString()); return null; } } //RSADecrypt } //RSACSPSample


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


RSACryptoServiceProvider プロパティ

名前 | 説明 | |
---|---|---|
![]() | KeyExchangeAlgorithm | オーバーライドされます。 RSA のこの実装で使用できるキー交換アルゴリズムの名前を取得します。 |
![]() | KeySize | オーバーライドされます。 現在のキーのサイズを取得します。 |
![]() | LegalKeySizes | 非対称アルゴリズムでサポートされているキー サイズを取得します。 ( AsymmetricAlgorithm から継承されます。) |
![]() | SignatureAlgorithm | オーバーライドされます。 RSA のこの実装で使用できる署名アルゴリズムの名前を取得します。 |
![]() | UseMachineKeyStore | ユーザー プロファイル ストアの代わりに、コンピュータのキー ストアでキーを永続化する必要があるかどうかを示す値を取得または設定します。 |

RSACryptoServiceProvider メソッド


RSACryptoServiceProvider メンバ
暗号サービス プロバイダ (CSP : Cryptographic Service Provider) によって提供された RSA アルゴリズムの実装を使用して、非対称暗号化および復号化を実行します。このクラスは継承できません。
RSACryptoServiceProvider データ型で公開されるメンバを以下の表に示します。


名前 | 説明 | |
---|---|---|
![]() | KeyExchangeAlgorithm | オーバーライドされます。 RSA のこの実装で使用できるキー交換アルゴリズムの名前を取得します。 |
![]() | KeySize | オーバーライドされます。 現在のキーのサイズを取得します。 |
![]() | LegalKeySizes | 非対称アルゴリズムでサポートされているキー サイズを取得します。(AsymmetricAlgorithm から継承されます。) |
![]() | SignatureAlgorithm | オーバーライドされます。 RSA のこの実装で使用できる署名アルゴリズムの名前を取得します。 |
![]() | UseMachineKeyStore | ユーザー プロファイル ストアの代わりに、コンピュータのキー ストアでキーを永続化する必要があるかどうかを示す値を取得または設定します。 |


- RSACryptoServiceProviderのページへのリンク