RSACryptoServiceProvider.Encrypt Method

Definition

Encrypts data with the RSA algorithm.

Overloads

Encrypt(Byte[], Boolean)

Encrypts data with the RSA algorithm.

Encrypt(Byte[], RSAEncryptionPadding)

Encrypts data with the RSA algorithm using the specified padding.

Encrypt(Byte[], Boolean)

Source:
RSACryptoServiceProvider.Unix.cs
Source:
RSACryptoServiceProvider.Unix.cs
Source:
RSACryptoServiceProvider.Unix.cs

Encrypts data with the RSA algorithm.

C#
public byte[] Encrypt(byte[] rgb, bool fOAEP);

Parameters

rgb
Byte[]

The data to be encrypted.

fOAEP
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.

Returns

Byte[]

The encrypted data.

Exceptions

The cryptographic service provider (CSP) cannot be acquired.

-or-

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

rgb is null.

Examples

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 Aes 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.

C#
using System;
using System.Security.Cryptography;

class RSACSPSample
{

    static void Main()
    {
        try
        {		//initialze the byte arrays to the public key information.
            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};

            byte[] Exponent = {1,0,1};
      
            //Values to store encrypted symmetric keys.
            byte[] EncryptedSymmetricKey;
            byte[] EncryptedSymmetricIV;

            //Create a new instance of RSACryptoServiceProvider.
            RSACryptoServiceProvider RSA = new RSACryptoServiceProvider();

            //Create a new instance of RSAParameters.
            RSAParameters RSAKeyInfo = new RSAParameters();

            //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 Aes class.
            Aes aes = Aes.Create();

            //Encrypt the symmetric key and IV.
            EncryptedSymmetricKey = RSA.Encrypt(aes.Key, false);
            EncryptedSymmetricIV = RSA.Encrypt(aes.IV, false);

            Console.WriteLine("Aes Key and IV have been encrypted with RSACryptoServiceProvider."); 
        }
        //Catch and display a CryptographicException  
        //to the console.
        catch(CryptographicException e)
        {
            Console.WriteLine(e.Message);
        }
    }
}

Remarks

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 Maximum Length of rgb Parameter
OAEP padding (PKCS#1 v2) Modulus size -2 -2*hLen, where hLen is the size of the hash.
Direct Encryption (PKCS#1 v1.5) Modulus size - 11. (11 bytes is the minimum padding possible.)

Use Decrypt to decrypt the results of this method.

See also

Applies to

.NET 10 and other versions
Product Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1

Encrypt(Byte[], RSAEncryptionPadding)

Source:
RSACryptoServiceProvider.Unix.cs
Source:
RSACryptoServiceProvider.Unix.cs
Source:
RSACryptoServiceProvider.Unix.cs

Encrypts data with the RSA algorithm using the specified padding.

C#
public override byte[] Encrypt(byte[] data, System.Security.Cryptography.RSAEncryptionPadding padding);

Parameters

data
Byte[]

The data to encrypt.

padding
RSAEncryptionPadding

The padding.

Returns

Byte[]

The encrypted data.

Exceptions

data is null.

-or-

padding is null.

The padding mode is not supported.

Remarks

padding must be either RSAEncryptionPadding.Pkcs1 or RSAEncryptionPadding.OaepSHA1.

Applies to

.NET 10 and other versions
Product Versions
.NET Core 1.0, Core 1.1, Core 2.0, Core 2.1, Core 2.2, Core 3.0, Core 3.1, 5, 6, 7, 8, 9, 10
.NET Framework 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1
.NET Standard 2.0, 2.1