Windows apps
Collapse the table of content
Expand the table of content
Information
The topic you requested is included in another documentation set. For convenience, it's displayed below. Choose Switch to see the topic in its original location.

RSACryptoServiceProvider::Encrypt Method (array<Byte>^, Boolean)

 

Encrypts data with the RSA algorithm.

Namespace:   System.Security.Cryptography
Assembly:  mscorlib (in mscorlib.dll)

public:
array<unsigned char>^ Encrypt(
	array<unsigned char>^ rgb,
	bool fOAEP
)

Parameters

rgb
Type: array<System::Byte>^

The data to be encrypted.

fOAEP
Type: System::Boolean

true to perform direct RSA encryption using OAEP padding (only available on a computer running Windows XP or later); otherwise, false to use PKCS#1 v1.5 padding.

Return Value

Type: array<System::Byte>^

The encrypted data.

Exception Condition
CryptographicException

The cryptographic service provider (CSP) cannot be acquired.

-or-

The length of the rgb parameter is greater than the maximum allowed length.

-or-

The fOAEP parameter is true and OAEP padding is not supported.

ArgumentNullException

rgb is null.

The following table describes the padding supported by different versions of Microsoft Windows and the maximum length of rgb allowed by the different combinations of operating systems and padding.

Padding

Operating System Supported

Maximum Length of rgb Parameter

OAEP padding (PKCS#1 v2)

Windows XP or later.

Modulus size -2 -2*hLen, where hLen is the size of the hash.

Direct Encryption (PKCS#1 v1.5)

Microsoft Windows 2000 or later with the high encryption pack installed.

Modulus size - 11. (11 bytes is the minimum padding possible.)

Direct Encryption and OAEP padding not supported

Microsoft Windows 98, Windows Millennium Edition, or Windows 2000 or later without the high encryption pack installed.

The maximum size allowed for a symmetric key.

Use Decrypt to decrypt the results of this method.

The following code example initializes an RSACryptoServiceProvider object to the value of a public key (sent by another party), generates a session key using the RijndaelManaged algorithm, and then encrypts the session key using the RSACryptoServiceProvider object. Using this scheme, the session key could be sent back to the owner of the private RSA key and the two parties could use the session key to exchange encrypted data.

#using <System.dll>

using namespace System;
using namespace System::Security::Cryptography;
int main()
{
   try
   {

      //initialze the Byte arrays to the public key information.
      array<Byte>^PublicKey = {214,46,220,83,160,73,40,39,201,155,19,202,3,11,191,178,56,74,90,36,248,103,18,144,170,163,145,87,54,61,34,220,222,207,137,149,173,14,92,120,206,222,158,28,40,24,30,16,175,108,128,35,230,118,40,121,113,125,216,130,11,24,90,48,194,240,105,44,76,34,57,249,228,125,80,38,9,136,29,117,207,139,168,181,85,137,126,10,126,242,120,247,121,8,100,12,201,171,38,226,193,180,190,117,177,87,143,242,213,11,44,180,113,93,106,99,179,68,175,211,164,116,64,148,226,254,172,147};
      array<Byte>^Exponent = {1,0,1};

      //Values to store encrypted symmetric keys.
      array<Byte>^EncryptedSymmetricKey;
      array<Byte>^EncryptedSymmetricIV;

      //Create a new instance of RSACryptoServiceProvider.
      RSACryptoServiceProvider^ RSA = gcnew RSACryptoServiceProvider;

      //Create a new instance of RSAParameters.
      RSAParameters RSAKeyInfo;

      //Set RSAKeyInfo to the public key values. 
      RSAKeyInfo.Modulus = PublicKey;
      RSAKeyInfo.Exponent = Exponent;

      //Import key parameters into RSA.
      RSA->ImportParameters( RSAKeyInfo );

      //Create a new instance of the RijndaelManaged class.
      RijndaelManaged^ RM = gcnew RijndaelManaged;

      //Encrypt the symmetric key and IV.
      EncryptedSymmetricKey = RSA->Encrypt( RM->Key, false );
      EncryptedSymmetricIV = RSA->Encrypt( RM->IV, false );
      Console::WriteLine( "RijndaelManaged Key and IV have been encrypted with RSACryptoServiceProvider." );
   }
   catch ( CryptographicException^ e ) 
   {

      //Catch and display a CryptographicException  
      //to the console.
      Console::WriteLine( e->Message );
   }

}

.NET Framework
Available since 1.1
Windows Phone Silverlight
Available since 7.1
Return to top
Show:
© 2017 Microsoft