RSACryptoServiceProvider Classe

Definição

Executa criptografia e descriptografia assimétricas usando a implementação do RSA algoritmo fornecido pelo provedor de serviços criptográficos (CSP). Essa classe não pode ser herdada.

public ref class RSACryptoServiceProvider sealed : System::Security::Cryptography::RSA
public ref class RSACryptoServiceProvider sealed : System::Security::Cryptography::RSA, System::Security::Cryptography::ICspAsymmetricAlgorithm
public sealed class RSACryptoServiceProvider : System.Security.Cryptography.RSA
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class RSACryptoServiceProvider : System.Security.Cryptography.RSA, System.Security.Cryptography.ICspAsymmetricAlgorithm
public sealed class RSACryptoServiceProvider : System.Security.Cryptography.RSA, System.Security.Cryptography.ICspAsymmetricAlgorithm
type RSACryptoServiceProvider = class
    inherit RSA
[<System.Runtime.InteropServices.ComVisible(true)>]
type RSACryptoServiceProvider = class
    inherit RSA
    interface ICspAsymmetricAlgorithm
type RSACryptoServiceProvider = class
    inherit RSA
    interface ICspAsymmetricAlgorithm
Public NotInheritable Class RSACryptoServiceProvider
Inherits RSA
Public NotInheritable Class RSACryptoServiceProvider
Inherits RSA
Implements ICspAsymmetricAlgorithm
Herança
RSACryptoServiceProvider
Atributos
Implementações

Exemplos

O exemplo de código a seguir usa a RSACryptoServiceProvider classe para criptografar uma cadeia de caracteres em uma matriz de bytes e descriptografar os bytes novamente em uma cadeia de caracteres.

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

O exemplo de código a seguir exporta as informações de chave criadas usando-as RSACryptoServiceProvider em um RSAParameters objeto.

try
{
    //Create a new RSACryptoServiceProvider object.
    using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider())
    {

        //Export the key information to an RSAParameters object.
        //Pass false to export the public key information or pass
        //true to export public and private key information.
        RSAParameters RSAParams = RSA.ExportParameters(false);
    }
}
catch (CryptographicException e)
{
    //Catch this exception in case the encryption did
    //not succeed.
    Console.WriteLine(e.Message);
}
Try

    'Create a new RSACryptoServiceProvider object. 
    Dim RSA As New RSACryptoServiceProvider()

    'Export the key information to an RSAParameters object.
    'Pass false to export the public key information or pass
    'true to export public and private key information.
    Dim RSAParams As RSAParameters = RSA.ExportParameters(False)


Catch e As CryptographicException
    'Catch this exception in case the encryption did
    'not succeed.
    Console.WriteLine(e.Message)
End Try

Comentários

Para obter mais informações sobre essa API, consulte comentários da API Suplementar para RSACryptoServiceProvider.

Construtores

Nome Description
RSACryptoServiceProvider()

Inicializa uma nova instância da RSACryptoServiceProvider classe com um par de chaves aleatórias.

RSACryptoServiceProvider(CspParameters)

Inicializa uma nova instância da RSACryptoServiceProvider classe com os parâmetros especificados.

RSACryptoServiceProvider(Int32, CspParameters)

Inicializa uma nova instância da RSACryptoServiceProvider classe com o tamanho e os parâmetros de chave especificados.

RSACryptoServiceProvider(Int32)

Inicializa uma nova instância da RSACryptoServiceProvider classe com um par de chaves aleatórias do tamanho da chave especificado.

Campos

Nome Description
KeySizeValue

Representa o tamanho, em bits, do módulo de chave usado pelo algoritmo assimétrico.

(Herdado de AsymmetricAlgorithm)
LegalKeySizesValue

Especifica os tamanhos de chave compatíveis com o algoritmo assimétrico.

(Herdado de AsymmetricAlgorithm)

Propriedades

Nome Description
CspKeyContainerInfo

Obtém um CspKeyContainerInfo objeto que descreve informações adicionais sobre um par de chaves criptográficas.

KeyExchangeAlgorithm

Obtém o nome do algoritmo de troca de chaves disponível com essa implementação de RSA.

KeySize

Obtém o tamanho da chave atual.

LegalKeySizes

Obtém os tamanhos de chave compatíveis com o algoritmo assimétrico.

LegalKeySizes

Obtém os tamanhos de chave compatíveis com o algoritmo assimétrico.

(Herdado de AsymmetricAlgorithm)
PersistKeyInCsp

Obtém ou define um valor que indica se a chave deve ser mantida no CSP (provedor de serviços criptográficos).

PublicOnly

Obtém um valor que indica se o RSACryptoServiceProvider objeto contém apenas uma chave pública.

SignatureAlgorithm

Obtém o nome do algoritmo de assinatura disponível com essa implementação de RSA.

UseMachineKeyStore

Obtém ou define um valor que indica se a chave deve ser mantida no repositório de chaves do computador em vez do repositório de perfil do usuário.

Métodos

Nome Description
Clear()

Libera todos os recursos usados pela AsymmetricAlgorithm classe.

(Herdado de AsymmetricAlgorithm)
Decrypt(Byte[], Boolean)

Descriptografa dados com o RSA algoritmo.

Decrypt(Byte[], RSAEncryptionPadding)

Descriptografa dados que foram criptografados anteriormente com o RSA algoritmo usando o preenchimento especificado.

DecryptValue(Byte[])

Não há suporte para esse método na versão atual.

Dispose()

Libera todos os recursos usados pela instância atual da AsymmetricAlgorithm classe.

(Herdado de AsymmetricAlgorithm)
Dispose(Boolean)

Libera os recursos não gerenciados usados pela AsymmetricAlgorithm classe e, opcionalmente, libera os recursos gerenciados.

(Herdado de AsymmetricAlgorithm)
Encrypt(Byte[], Boolean)

Criptografa dados com o RSA algoritmo.

Encrypt(Byte[], RSAEncryptionPadding)

Criptografa dados com o RSA algoritmo usando o preenchimento especificado.

EncryptValue(Byte[])

Não há suporte para esse método na versão atual.

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
ExportCspBlob(Boolean)

Exporta um blob que contém as informações de chave associadas a um RSACryptoServiceProvider objeto.

ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters)

Exporta a chave atual no formato PKCS#8 EncryptedPrivateKeyInfo com uma senha baseada em bytes.

(Herdado de AsymmetricAlgorithm)
ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters)

Exporta a chave atual no formato PKCS#8 EncryptedPrivateKeyInfo com uma senha baseada em char.

(Herdado de AsymmetricAlgorithm)
ExportParameters(Boolean)

Exporta o RSAParameters.

ExportPkcs8PrivateKey()

Exporta a chave atual no formato PKCS#8 PrivateKeyInfo.

(Herdado de AsymmetricAlgorithm)
ExportRSAPrivateKey()

Exporta a chave atual no formato PKCS#1 RSAPrivateKey.

(Herdado de RSA)
ExportRSAPublicKey()

Exporta a parte de chave pública da chave atual no formato PKCS#1 RSAPublicKey.

(Herdado de RSA)
ExportSubjectPublicKeyInfo()

Exporta a parte de chave pública da chave atual no formato SubjectPublicKeyInfo X.509.

(Herdado de AsymmetricAlgorithm)
Finalize()

Libera os recursos não gerenciados mantidos por essa instância.

FromXmlString(String)

Inicializa um RSA objeto das informações de chave de uma cadeia de caracteres XML.

(Herdado de RSA)
GetHashCode()

Serve como a função hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
HashData(Byte[], Int32, Int32, HashAlgorithmName)

Quando substituído em uma classe derivada, calcula o valor de hash de uma parte especificada de uma matriz de bytes usando um algoritmo de hash especificado.

(Herdado de RSA)
HashData(Stream, HashAlgorithmName)

Quando substituído em uma classe derivada, calcula o valor de hash de um fluxo binário especificado usando um algoritmo de hash especificado.

(Herdado de RSA)
ImportCspBlob(Byte[])

Importa um blob que representa informações de chave RSA.

ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, Int32)

Quando substituído em uma classe derivada, importa o keypair público/privado de uma estrutura PKCS#8 EncryptedPrivateKeyInfo depois de descriptografar com uma senha baseada em bytes, substituindo as chaves desse objeto.

(Herdado de AsymmetricAlgorithm)
ImportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, ReadOnlySpan<Byte>, Int32)

Quando substituído em uma classe derivada, importa o keypair público/privado de uma estrutura PKCS#8 EncryptedPrivateKeyInfo depois de descriptografar com uma senha baseada em char, substituindo as chaves desse objeto.

(Herdado de AsymmetricAlgorithm)
ImportParameters(RSAParameters)

Importa o especificado RSAParameters.

ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32)

Quando substituído em uma classe derivada, importa o keypair público/privado de uma estrutura PKCS#8 PrivateKeyInfo após a descriptografia, substituindo as chaves desse objeto.

(Herdado de AsymmetricAlgorithm)
ImportRSAPrivateKey(ReadOnlySpan<Byte>, Int32)

Importa o keypair público/privado de uma estrutura PKCS#1 RSAPrivateKey após a descriptografia, substituindo as chaves desse objeto.

(Herdado de RSA)
ImportRSAPublicKey(ReadOnlySpan<Byte>, Int32)

Importa a chave pública de uma estrutura RSAPublicKey PKCS nº 1 após a descriptografia, substituindo as chaves desse objeto.

(Herdado de RSA)
ImportSubjectPublicKeyInfo(ReadOnlySpan<Byte>, Int32)

Quando substituído em uma classe derivada, importa a chave pública de uma estrutura SubjectPublicKeyInfo X.509 após a descriptografia, substituindo as chaves desse objeto.

(Herdado de AsymmetricAlgorithm)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
SignData(Byte[], HashAlgorithmName, RSASignaturePadding)

Calcula o valor de hash da matriz de bytes especificada usando o algoritmo de hash e o modo de preenchimento especificados e assina o valor de hash resultante.

(Herdado de RSA)
SignData(Byte[], Int32, Int32, HashAlgorithmName, RSASignaturePadding)

Calcula o valor de hash de uma parte da matriz de bytes especificada usando o algoritmo de hash e o modo de preenchimento especificados e assina o valor de hash resultante.

(Herdado de RSA)
SignData(Byte[], Int32, Int32, Object)

Calcula o valor de hash de um subconjunto da matriz de bytes especificada usando o algoritmo de hash especificado e assina o valor de hash resultante.

SignData(Byte[], Object)

Calcula o valor de hash da matriz de bytes especificada usando o algoritmo de hash especificado e assina o valor de hash resultante.

SignData(Stream, HashAlgorithmName, RSASignaturePadding)

Calcula o valor de hash do fluxo especificado usando o algoritmo de hash e o modo de preenchimento especificados e assina o valor de hash resultante.

(Herdado de RSA)
SignData(Stream, Object)

Calcula o valor de hash do fluxo de entrada especificado usando o algoritmo de hash especificado e assina o valor de hash resultante.

SignHash(Byte[], HashAlgorithmName, RSASignaturePadding)

Calcula a assinatura do valor de hash especificado usando o preenchimento especificado.

SignHash(Byte[], String)

Calcula a assinatura para o valor de hash especificado.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
ToXmlString(Boolean)

Cria e retorna uma cadeia de caracteres XML que contém a chave do objeto atual RSA .

(Herdado de RSA)
TryDecrypt(ReadOnlySpan<Byte>, Span<Byte>, RSAEncryptionPadding, Int32)

Tenta descriptografar os dados de entrada usando o modo de preenchimento especificado, gravando o resultado em um buffer fornecido.

(Herdado de RSA)
TryEncrypt(ReadOnlySpan<Byte>, Span<Byte>, RSAEncryptionPadding, Int32)

Tenta criptografar os dados de entrada com um modo de preenchimento especificado em um buffer fornecido.

(Herdado de RSA)
TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters, Span<Byte>, Int32)

Quando substituído em uma classe derivada, tenta exportar a chave atual no formato PKCS#8 EncryptedPrivateKeyInfo para um buffer fornecido, usando uma senha baseada em bytes.

(Herdado de AsymmetricAlgorithm)
TryExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Char>, PbeParameters, Span<Byte>, Int32)

Quando substituído em uma classe derivada, tenta exportar a chave atual no formato PKCS#8 EncryptedPrivateKeyInfo para um buffer fornecido, usando uma senha baseada em char.

(Herdado de AsymmetricAlgorithm)
TryExportPkcs8PrivateKey(Span<Byte>, Int32)

Quando substituído em uma classe derivada, tenta exportar a chave atual no formato PKCS#8 PrivateKeyInfo para um buffer fornecido.

(Herdado de AsymmetricAlgorithm)
TryExportRSAPrivateKey(Span<Byte>, Int32)

Tenta exportar a chave atual no formato PKCS#1 RSAPrivateKey para um buffer fornecido.

(Herdado de RSA)
TryExportRSAPublicKey(Span<Byte>, Int32)

Tenta exportar a chave atual no formato PKCS#1 RSAPublicKey para um buffer fornecido.

(Herdado de RSA)
TryExportSubjectPublicKeyInfo(Span<Byte>, Int32)

Quando substituído em uma classe derivada, tenta exportar a chave atual no formato SubjectPublicKeyInfo X.509 para um buffer fornecido.

(Herdado de AsymmetricAlgorithm)
TryHashData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, Int32)

Tenta calcular o hash dos dados fornecidos usando o algoritmo especificado, gravando os resultados em um buffer fornecido.

(Herdado de RSA)
TrySignData(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, RSASignaturePadding, Int32)

Tenta fazer hash dos dados fornecidos com o algoritmo especificado e assinar o hash com a chave atual, gravando a assinatura em um buffer fornecido.

(Herdado de RSA)
TrySignHash(ReadOnlySpan<Byte>, Span<Byte>, HashAlgorithmName, RSASignaturePadding, Int32)

Tenta assinar o hash com a chave atual, gravando a assinatura em um buffer fornecido.

(Herdado de RSA)
VerifyData(Byte[], Byte[], HashAlgorithmName, RSASignaturePadding)

Verifica se uma assinatura digital é válida calculando o valor de hash dos dados especificados usando o algoritmo de hash e o preenchimento especificados e comparando-o com a assinatura fornecida.

(Herdado de RSA)
VerifyData(Byte[], Int32, Int32, Byte[], HashAlgorithmName, RSASignaturePadding)

Verifica se uma assinatura digital é válida calculando o valor de hash dos dados em uma parte de uma matriz de bytes usando o algoritmo de hash e o preenchimento especificados e comparando-o com a assinatura fornecida.

(Herdado de RSA)
VerifyData(Byte[], Object, Byte[])

Verifica se uma assinatura digital é válida determinando o valor de hash na assinatura usando a chave pública fornecida e comparando-a com o valor de hash dos dados fornecidos.

VerifyData(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, HashAlgorithmName, RSASignaturePadding)

Verifica se uma assinatura digital é válida calculando o valor de hash dos dados especificados usando o algoritmo de hash e o preenchimento especificados e comparando-o com a assinatura fornecida.

(Herdado de RSA)
VerifyData(Stream, Byte[], HashAlgorithmName, RSASignaturePadding)

Verifica se uma assinatura digital é válida calculando o valor de hash do fluxo especificado usando o algoritmo de hash e o preenchimento especificados e comparando-o com a assinatura fornecida.

(Herdado de RSA)
VerifyHash(Byte[], Byte[], HashAlgorithmName, RSASignaturePadding)

Verifica se uma assinatura digital é válida determinando o valor de hash na assinatura usando o algoritmo de hash e o preenchimento especificados e comparando-o com o valor de hash fornecido.

VerifyHash(Byte[], String, Byte[])

Verifica se uma assinatura digital é válida determinando o valor de hash na assinatura usando a chave pública fornecida e comparando-a com o valor de hash fornecido.

VerifyHash(ReadOnlySpan<Byte>, ReadOnlySpan<Byte>, HashAlgorithmName, RSASignaturePadding)

Verifica se uma assinatura digital é válida determinando o valor de hash na assinatura usando o algoritmo de hash e o preenchimento especificados e comparando-o com o valor de hash fornecido.

(Herdado de RSA)

Implantações explícitas de interface

Nome Description
IDisposable.Dispose()

Esta API dá suporte à infraestrutura do produto e não deve ser usada diretamente do seu código.

Para obter uma descrição deste membro, consulte Dispose().

(Herdado de AsymmetricAlgorithm)

Aplica-se a

Confira também