RSACryptoServiceProvider.Encrypt Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Encripta dados com o RSA algoritmo.
Sobrecargas
| Name | Description |
|---|---|
| Encrypt(Byte[], Boolean) |
Encripta dados com o RSA algoritmo. |
| Encrypt(Byte[], RSAEncryptionPadding) |
Encripta os dados com o RSA algoritmo usando o padding especificado. |
Encrypt(Byte[], Boolean)
Encripta dados com o RSA algoritmo.
public:
cli::array <System::Byte> ^ Encrypt(cli::array <System::Byte> ^ rgb, bool fOAEP);
public byte[] Encrypt(byte[] rgb, bool fOAEP);
member this.Encrypt : byte[] * bool -> byte[]
override this.Encrypt : byte[] * bool -> byte[]
Public Function Encrypt (rgb As Byte(), fOAEP As Boolean) As Byte()
Parâmetros
- rgb
- Byte[]
Os dados a serem encriptados.
- fOAEP
- Boolean
true para realizar encriptação direta RSA usando preenchimento OAEP (disponível apenas num computador a correr Windows XP ou posterior); caso contrário, false usar enchimento PKCS#1 v1.5.
Devoluções
Os dados encriptados.
Exceções
O fornecedor de serviços criptográficos (CSP) não pode ser adquirido.
-ou-
O comprimento do rgb parâmetro é maior do que o comprimento máximo permitido.
rgb é null.
Exemplos
O exemplo de código seguinte inicializa um RSACryptoServiceProvider objeto ao valor de uma chave pública (enviada por outra parte), gera uma chave de sessão usando o Aes algoritmo e depois encripta a chave de sessão usando o RSACryptoServiceProvider objeto. Usando este esquema, a chave de sessão podia ser enviada de volta ao proprietário da chave RSA privada e as duas partes podiam usar a chave de sessão para trocar dados encriptados.
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);
}
}
}
Imports System.Security.Cryptography
Class RSACSPSample
Shared Sub Main()
Try
'initialze the byte arrays to the public key information.
Dim PublicKey As Byte() = {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}
Dim Exponent As Byte() = {1, 0, 1}
'Values to store encrypted symmetric keys.
Dim EncryptedSymmetricKey() As Byte
Dim EncryptedSymmetricIV() As Byte
'Create a new instance of RSACryptoServiceProvider.
Dim RSA As New RSACryptoServiceProvider()
'Create a new instance of RSAParameters.
Dim RSAKeyInfo As 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.
Dim aes As 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 RSA.")
'Catch and display a CryptographicException
'to the console.
Catch e As CryptographicException
Console.WriteLine(e.Message)
End Try
End Sub
End Class
Observações
A tabela seguinte descreve o preenchimento suportado por diferentes versões de Microsoft Windows e o comprimento máximo de rgb permitido pelas diferentes combinações de sistemas operativos e preenchimento (padding).
| Preenchimento | Comprimento Máximo do Parâmetro RGB |
|---|---|
| Enchimento OAEP (PKCS#1 v2) | Módulo -2 -2*hLen, onde hLen é o tamanho do hash. |
| Encriptação Direta (PKCS#1 v1.5) | Tamanho do módulo - 11. (11 bytes é o preenchimento mínimo possível.) |
Use Decrypt para decifrar os resultados deste método.
Ver também
Aplica-se a
Encrypt(Byte[], RSAEncryptionPadding)
Encripta os dados com o RSA algoritmo usando o padding especificado.
public:
override cli::array <System::Byte> ^ Encrypt(cli::array <System::Byte> ^ data, System::Security::Cryptography::RSAEncryptionPadding ^ padding);
public override byte[] Encrypt(byte[] data, System.Security.Cryptography.RSAEncryptionPadding padding);
override this.Encrypt : byte[] * System.Security.Cryptography.RSAEncryptionPadding -> byte[]
Public Overrides Function Encrypt (data As Byte(), padding As RSAEncryptionPadding) As Byte()
Parâmetros
- data
- Byte[]
Os dados a encriptar.
- padding
- RSAEncryptionPadding
O preenchimento.
Devoluções
Os dados encriptados.
Exceções
O modo de enchimento não é suportado.
Observações
padding deve ser ou RSAEncryptionPadding.Pkcs1 ou RSAEncryptionPadding.OaepSHA1.