RSACryptoServiceProvider.Encrypt Método

Definição

Criptografa dados com o algoritmo RSA.

Sobrecargas

Encrypt(Byte[], Boolean)

Criptografa dados com o algoritmo RSA.

Encrypt(Byte[], RSAEncryptionPadding)

Criptografa dados com o algoritmo RSA usando o preenchimento especificado.

Encrypt(Byte[], Boolean)

Origem:
RSACryptoServiceProvider.Unix.cs
Origem:
RSACryptoServiceProvider.Unix.cs
Origem:
RSACryptoServiceProvider.Unix.cs

Criptografa dados com o algoritmo RSA.

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

Parâmetros

rgb
Byte[]

Os dados a serem criptografados.

fOAEP
Boolean

true para executar a criptografia RSA direta usando o preenchimento OAEP (disponível apenas em um computador executando o Windows XP ou posterior); caso contrário, false para usar o preenchimento PKCS nº 1 v1.5.

Retornos

Byte[]

Os dados criptografados.

Exceções

O CSP (provedor de serviços de criptografia) não pode ser adquirido.

- ou -

O tamanho do parâmetro rgb é maior que o tamanho máximo permitido.

rgb é null.

Exemplos

O exemplo de código a seguir inicializa um RSACryptoServiceProvider objeto para o valor de uma chave pública (enviado por outra parte), gera uma chave de sessão usando o Aes algoritmo e criptografa a chave de sessão usando o RSACryptoServiceProvider objeto . Usando esse esquema, a chave de sessão pode ser enviada de volta ao proprietário da chave RSA privada e as duas partes podem usar a chave de sessão para trocar dados criptografados.

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);
        }
    }
}

Comentários

A tabela a seguir descreve o preenchimento com suporte em diferentes versões do Microsoft Windows e o comprimento máximo permitido rgb pelas diferentes combinações de sistemas operacionais e preenchimento.

Preenchimento Comprimento máximo do parâmetro rgb
Preenchimento OAEP (PKCS nº 1 v2) Tamanho do módulo -2 -2*hLen, em que hLen é do tamanho do hash.
Criptografia Direta (PKCS nº 1 v1.5) Tamanho do módulo – 11. (11 bytes é o preenchimento mínimo possível.)

Use Decrypt para descriptografar os resultados desse método.

Confira também

Aplica-se a

.NET 10 e outras versões
Produto Versões
.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)

Origem:
RSACryptoServiceProvider.Unix.cs
Origem:
RSACryptoServiceProvider.Unix.cs
Origem:
RSACryptoServiceProvider.Unix.cs

Criptografa dados com o algoritmo RSA usando o preenchimento especificado.

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

Parâmetros

data
Byte[]

Os dados a serem criptografados.

padding
RSAEncryptionPadding

O preenchimento.

Retornos

Byte[]

Os dados criptografados.

Exceções

data é null.

- ou -

padding é null.

Não há suporte para o modo de preenchimento.

Comentários

padding deve ser ou RSAEncryptionPadding.Pkcs1RSAEncryptionPadding.OaepSHA1.

Aplica-se a

.NET 10 e outras versões
Produto Versões
.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