RSACryptoServiceProvider Konstruktor
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menginisialisasi instans baru kelas RSACryptoServiceProvider.
Overload
RSACryptoServiceProvider() |
Menginisialisasi instans RSACryptoServiceProvider baru kelas dengan pasangan kunci acak. |
RSACryptoServiceProvider(Int32) |
Menginisialisasi instans RSACryptoServiceProvider baru kelas dengan pasangan kunci acak dari ukuran kunci yang ditentukan. |
RSACryptoServiceProvider(CspParameters) |
Menginisialisasi instans RSACryptoServiceProvider baru kelas dengan parameter yang ditentukan. |
RSACryptoServiceProvider(Int32, CspParameters) |
Menginisialisasi instans RSACryptoServiceProvider baru kelas dengan ukuran kunci dan parameter yang ditentukan. |
RSACryptoServiceProvider()
Menginisialisasi instans RSACryptoServiceProvider baru kelas dengan pasangan kunci acak.
public:
RSACryptoServiceProvider();
public RSACryptoServiceProvider ();
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public RSACryptoServiceProvider ();
Public Sub New ()
- Atribut
Pengecualian
Penyedia layanan kriptografi (CSP) tidak dapat diperoleh.
Contoh
Contoh kode berikut menggunakan RSACryptoServiceProvider kelas untuk mengenkripsi string ke dalam array byte lalu mendekripsi byte kembali ke dalam string.
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.
array<Byte>^encryptedData = RSA->Encrypt( DataToEncrypt, DoOAEPPadding );
delete RSA;
return encryptedData;
}
//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.
array<Byte>^decryptedData = RSA->Decrypt( DataToDecrypt, DoOAEPPadding );
delete RSA;
return decryptedData;
}
//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 ) );
delete RSA;
}
catch ( ArgumentNullException^ )
{
//Catch this exception in case the encryption did
//not succeed.
Console::WriteLine( "Encryption failed." );
}
}
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.
using (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.");
}
}
public static byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding)
{
try
{
byte[] encryptedData;
//Create a new instance of RSACryptoServiceProvider.
using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
{
//Import the RSA Key information. This only needs
//to include 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.
encryptedData = RSA.Encrypt(DataToEncrypt, DoOAEPPadding);
}
return encryptedData;
}
//Catch and display a CryptographicException
//to the console.
catch (CryptographicException e)
{
Console.WriteLine(e.Message);
return null;
}
}
public static byte[] RSADecrypt(byte[] DataToDecrypt, RSAParameters RSAKeyInfo, bool DoOAEPPadding)
{
try
{
byte[] decryptedData;
//Create a new instance of RSACryptoServiceProvider.
using (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.
decryptedData = RSA.Decrypt(DataToDecrypt, DoOAEPPadding);
}
return decryptedData;
}
//Catch and display a CryptographicException
//to the console.
catch (CryptographicException e)
{
Console.WriteLine(e.ToString());
return null;
}
}
}
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.
Using 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))
End Using
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
Dim encryptedData() As Byte
'Create a new instance of RSACryptoServiceProvider.
Using 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.
encryptedData = RSA.Encrypt(DataToEncrypt, DoOAEPPadding)
End Using
Return encryptedData
'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
Dim decryptedData() As Byte
'Create a new instance of RSACryptoServiceProvider.
Using 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.
decryptedData = RSA.Decrypt(DataToDecrypt, DoOAEPPadding)
'Catch and display a CryptographicException
'to the console.
End Using
Return decryptedData
Catch e As CryptographicException
Console.WriteLine(e.ToString())
Return Nothing
End Try
End Function
End Class
Keterangan
Konstruktor ini membuat pasangan kunci yang Exchange cocok untuk mengenkripsi kunci sesi sehingga dapat disimpan dan ditukar dengan pengguna lain dengan aman. Kunci yang dihasilkan sesuai dengan kunci yang dihasilkan menggunakan nilai yang AT_KEYEXCHANGE
digunakan dalam Microsoft Cryptographic API (CAPI) yang tidak dikelola.
Konstruktor ini tidak segera menghasilkan keypair publik/privat baru. Jika tidak ada kunci yang dimuat melalui ImportParameters metode , atau metode impor kunci lainnya, sebelum kunci diperlukan, kunci ephemeral 1024-bit dibuat sesuai permintaan.
Lihat juga
Berlaku untuk
RSACryptoServiceProvider(Int32)
Menginisialisasi instans RSACryptoServiceProvider baru kelas dengan pasangan kunci acak dari ukuran kunci yang ditentukan.
public:
RSACryptoServiceProvider(int dwKeySize);
public RSACryptoServiceProvider (int dwKeySize);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public RSACryptoServiceProvider (int dwKeySize);
new System.Security.Cryptography.RSACryptoServiceProvider : int -> System.Security.Cryptography.RSACryptoServiceProvider
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
new System.Security.Cryptography.RSACryptoServiceProvider : int -> System.Security.Cryptography.RSACryptoServiceProvider
Public Sub New (dwKeySize As Integer)
Parameter
- dwKeySize
- Int32
Ukuran kunci yang akan digunakan dalam bit.
- Atribut
Pengecualian
Penyedia layanan kriptografi (CSP) tidak dapat diperoleh.
Contoh
Contoh kode berikut membuat RSACryptoServiceProvider, menghasilkan kunci baru, dan menyimpannya dalam kontainer kunci.
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." );
}
}
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;
}
}
}
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
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
Keterangan
Konstruktor ini membuat pasangan kunci yang Exchange cocok untuk mengenkripsi kunci sesi sehingga dapat disimpan dan ditukar dengan pengguna lain dengan aman. Kunci yang dihasilkan sesuai dengan kunci yang dihasilkan menggunakan nilai yang AT_KEYEXCHANGE
digunakan dalam Microsoft Cryptographic API (CAPI) yang tidak dikelola.
Konstruktor ini tidak segera menghasilkan keypair publik/privat baru.
Jika tidak ada kunci yang dimuat melalui ImportParameters metode , atau metode impor kunci lainnya, sebelum kunci diperlukan maka dwKeySize
kunci -bit ephemeral dibuat sesuai permintaan.
Lihat juga
Berlaku untuk
RSACryptoServiceProvider(CspParameters)
Menginisialisasi instans RSACryptoServiceProvider baru kelas dengan parameter yang ditentukan.
public:
RSACryptoServiceProvider(System::Security::Cryptography::CspParameters ^ parameters);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public RSACryptoServiceProvider (System.Security.Cryptography.CspParameters? parameters);
public RSACryptoServiceProvider (System.Security.Cryptography.CspParameters parameters);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
new System.Security.Cryptography.RSACryptoServiceProvider : System.Security.Cryptography.CspParameters -> System.Security.Cryptography.RSACryptoServiceProvider
new System.Security.Cryptography.RSACryptoServiceProvider : System.Security.Cryptography.CspParameters -> System.Security.Cryptography.RSACryptoServiceProvider
Public Sub New (parameters As CspParameters)
Parameter
- parameters
- CspParameters
Parameter yang akan diteruskan ke penyedia layanan kriptografi (CSP).
- Atribut
Pengecualian
CSP tidak dapat diperoleh.
Contoh
Contoh kode berikut membuat RSACryptoServiceProvider objek, menghasilkan kunci baru, dan menyimpannya dalam kontainer kunci.
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." );
}
}
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;
}
}
}
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
Keterangan
Konstruktor ini membuat atau menggunakan kembali kontainer kunci yang ditentukan menggunakan KeyContainerName bidang parameters
parameter .
Secara default, konstruktor ini membuat pasangan kunci yang Exchange cocok untuk mengenkripsi kunci sesi sehingga dapat disimpan dan dipertukarkan dengan pengguna lain dengan aman. Kunci yang dihasilkan sesuai dengan kunci yang dihasilkan menggunakan nilai yang AT_KEYEXCHANGE
digunakan dalam Microsoft Cryptographic API (CAPI) yang tidak dikelola.
Anda dapat membuat pasangan kunci yang Signature cocok untuk mengautentikasi pesan atau file (ditandatangani secara digital) dengan mengatur KeyNumber bidang parameters
parameter ke Signature nilai . Jenis kunci ini sesuai dengan nilai yang AT_SIGNATURE
digunakan dalam CAPI.
Jika Anda membuat RSACryptoServiceProvider objek dengan Exchange nilai yang ditentukan lalu membuat objek lain RSACryptoServiceProvider dengan Signature nilai yang ditentukan, kedua kunci akan ditempatkan dalam satu kontainer jika kedua objek menentukan nama kontainer kunci yang sama.
Untuk membuat kunci yang kompatibel dengan penandatanganan nama yang kuat menggunakan RSACryptoServiceProvider kelas , Anda harus membuat Signature pasangan kunci.
Lihat juga
Berlaku untuk
RSACryptoServiceProvider(Int32, CspParameters)
Menginisialisasi instans RSACryptoServiceProvider baru kelas dengan ukuran kunci dan parameter yang ditentukan.
public:
RSACryptoServiceProvider(int dwKeySize, System::Security::Cryptography::CspParameters ^ parameters);
[System.Runtime.Versioning.SupportedOSPlatform("windows")]
public RSACryptoServiceProvider (int dwKeySize, System.Security.Cryptography.CspParameters? parameters);
public RSACryptoServiceProvider (int dwKeySize, System.Security.Cryptography.CspParameters parameters);
[<System.Runtime.Versioning.SupportedOSPlatform("windows")>]
new System.Security.Cryptography.RSACryptoServiceProvider : int * System.Security.Cryptography.CspParameters -> System.Security.Cryptography.RSACryptoServiceProvider
new System.Security.Cryptography.RSACryptoServiceProvider : int * System.Security.Cryptography.CspParameters -> System.Security.Cryptography.RSACryptoServiceProvider
Public Sub New (dwKeySize As Integer, parameters As CspParameters)
Parameter
- dwKeySize
- Int32
Ukuran kunci yang akan digunakan dalam bit.
- parameters
- CspParameters
Parameter yang akan diteruskan ke penyedia layanan kriptografi (CSP).
- Atribut
Pengecualian
Contoh
Contoh kode berikut membuat RSACryptoServiceProvider, menghasilkan kunci baru, dan menyimpannya dalam kontainer kunci.
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." );
}
}
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;
}
}
}
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
Keterangan
Konstruktor ini membuat atau menggunakan kembali kontainer kunci yang ditentukan menggunakan KeyContainerName bidang parameters
parameter .
Secara default, konstruktor ini membuat pasangan kunci yang Exchange cocok untuk mengenkripsi kunci sesi sehingga dapat disimpan dan dipertukarkan dengan pengguna lain dengan aman. Kunci yang dihasilkan sesuai dengan kunci yang dihasilkan menggunakan nilai yang AT_KEYEXCHANGE
digunakan dalam Microsoft Cryptographic API (CAPI) yang tidak dikelola.
Anda dapat membuat pasangan kunci yang Signature cocok untuk mengautentikasi pesan atau file (ditandatangani secara digital) dengan mengatur KeyNumber bidang parameters
parameter ke Signature nilai . Jenis kunci ini sesuai dengan nilai yang AT_SIGNATURE
digunakan dalam CAPI.
Jika Anda membuat RSACryptoServiceProvider objek dengan Exchange nilai yang ditentukan lalu membuat objek lain RSACryptoServiceProvider dengan Signature nilai yang ditentukan, kedua kunci akan ditempatkan dalam satu kontainer jika kedua objek menentukan nama kontainer kunci yang sama.
Untuk membuat kunci yang kompatibel dengan penandatanganan nama yang kuat menggunakan RSACryptoServiceProvider kelas , Anda harus membuat Signature pasangan kunci.