RSACryptoServiceProvider Clase

Definición

Realiza el cifrado y el descifrado asimétricos mediante la implementación del RSA algoritmo proporcionado por el proveedor de servicios criptográficos (CSP). Esta clase no puede heredarse.

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
Herencia
RSACryptoServiceProvider
Atributos
Implementaciones

Ejemplos

En el ejemplo de código siguiente se usa la RSACryptoServiceProvider clase para cifrar una cadena en una matriz de bytes y, a continuación, descifrar los bytes de nuevo en una cadena.

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

En el ejemplo de código siguiente se exporta la información de clave creada mediante en RSACryptoServiceProvider un 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

Comentarios

Para obtener más información sobre esta API, consulte Comentarios de API complementarias para RSACryptoServiceProvider.

Constructores

Nombre Description
RSACryptoServiceProvider()

Inicializa una nueva instancia de la RSACryptoServiceProvider clase con un par de claves aleatorio.

RSACryptoServiceProvider(CspParameters)

Inicializa una nueva instancia de la RSACryptoServiceProvider clase con los parámetros especificados.

RSACryptoServiceProvider(Int32, CspParameters)

Inicializa una nueva instancia de la RSACryptoServiceProvider clase con el tamaño de clave y los parámetros especificados.

RSACryptoServiceProvider(Int32)

Inicializa una nueva instancia de la RSACryptoServiceProvider clase con un par de claves aleatorio del tamaño de clave especificado.

Campos

Nombre Description
KeySizeValue

Representa el tamaño, en bits, del módulo de clave utilizado por el algoritmo asimétrico.

(Heredado de AsymmetricAlgorithm)
LegalKeySizesValue

Especifica los tamaños de clave admitidos por el algoritmo asimétrico.

(Heredado de AsymmetricAlgorithm)

Propiedades

Nombre Description
CspKeyContainerInfo

Obtiene un CspKeyContainerInfo objeto que describe información adicional sobre un par de claves criptográficas.

KeyExchangeAlgorithm

Obtiene el nombre del algoritmo de intercambio de claves disponible con esta implementación de RSA.

KeySize

Obtiene el tamaño de la clave actual.

LegalKeySizes

Obtiene los tamaños de clave admitidos por el algoritmo asimétrico.

LegalKeySizes

Obtiene los tamaños de clave admitidos por el algoritmo asimétrico.

(Heredado de AsymmetricAlgorithm)
PersistKeyInCsp

Obtiene o establece un valor que indica si la clave debe conservarse en el proveedor de servicios criptográficos (CSP).

PublicOnly

Obtiene un valor que indica si el RSACryptoServiceProvider objeto contiene solo una clave pública.

SignatureAlgorithm

Obtiene el nombre del algoritmo de firma disponible con esta implementación de RSA.

UseMachineKeyStore

Obtiene o establece un valor que indica si la clave debe conservarse en el almacén de claves del equipo en lugar del almacén de perfiles de usuario.

Métodos

Nombre Description
Clear()

Libera todos los recursos usados por la AsymmetricAlgorithm clase .

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

Descifra los datos con el RSA algoritmo .

Decrypt(Byte[], RSAEncryptionPadding)

Descifra los datos que se cifraron anteriormente con el RSA algoritmo mediante el relleno especificado.

DecryptValue(Byte[])

Este método no se admite en la versión actual.

Dispose()

Libera todos los recursos usados por la instancia actual de la AsymmetricAlgorithm clase .

(Heredado de AsymmetricAlgorithm)
Dispose(Boolean)

Libera los recursos no administrados usados por la AsymmetricAlgorithm clase y, opcionalmente, libera los recursos administrados.

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

Cifra los datos con el RSA algoritmo.

Encrypt(Byte[], RSAEncryptionPadding)

Cifra los datos con el RSA algoritmo mediante el relleno especificado.

EncryptValue(Byte[])

Este método no se admite en la versión actual.

Equals(Object)

Determina si el objeto especificado es igual al objeto actual.

(Heredado de Object)
ExportCspBlob(Boolean)

Exporta un blob que contiene la información de clave asociada a un RSACryptoServiceProvider objeto .

ExportEncryptedPkcs8PrivateKey(ReadOnlySpan<Byte>, PbeParameters)

Exporta la clave actual en el formato EncryptedPrivateKeyInfo de PKCS#8 con una contraseña basada en bytes.

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

Exporta la clave actual en el formato EncryptedPrivateKeyInfo de PKCS#8 con una contraseña basada en caracteres.

(Heredado de AsymmetricAlgorithm)
ExportParameters(Boolean)

Exporta .RSAParameters

ExportPkcs8PrivateKey()

Exporta la clave actual en el formato PrivateKeyInfo PKCS#8.

(Heredado de AsymmetricAlgorithm)
ExportRSAPrivateKey()

Exporta la clave actual en el formato RSAPrivateKey PKCS#1.

(Heredado de RSA)
ExportRSAPublicKey()

Exporta la parte de clave pública de la clave actual en el formato RSAPublicKey PKCS#1.

(Heredado de RSA)
ExportSubjectPublicKeyInfo()

Exporta la parte de clave pública de la clave actual en el formato SubjectPublicKeyInfo X.509.

(Heredado de AsymmetricAlgorithm)
Finalize()

Libera los recursos no administrados mantenidos por esta instancia.

FromXmlString(String)

Inicializa un RSA objeto a partir de la información de clave de una cadena XML.

(Heredado de RSA)
GetHashCode()

Actúa como la función hash predeterminada.

(Heredado de Object)
GetType()

Obtiene el Type de la instancia actual.

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

Cuando se reemplaza en una clase derivada, calcula el valor hash de una parte especificada de una matriz de bytes mediante un algoritmo hash especificado.

(Heredado de RSA)
HashData(Stream, HashAlgorithmName)

Cuando se reemplaza en una clase derivada, calcula el valor hash de una secuencia binaria especificada mediante un algoritmo hash especificado.

(Heredado de RSA)
ImportCspBlob(Byte[])

Importa un blob que representa información de clave RSA.

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

Cuando se reemplaza en una clase derivada, importa el keypair público/privado de una estructura EncryptedPrivateKeyInfo de PKCS#8 después de descifrar con una contraseña basada en bytes, reemplazando las claves de este objeto.

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

Cuando se reemplaza en una clase derivada, importa el keypair público/privado de una estructura EncryptedPrivateKeyInfo de PKCS#8 después de descifrar con una contraseña basada en caracteres, reemplazando las claves de este objeto.

(Heredado de AsymmetricAlgorithm)
ImportParameters(RSAParameters)

Importa el objeto especificado RSAParameters.

ImportPkcs8PrivateKey(ReadOnlySpan<Byte>, Int32)

Cuando se invalida en una clase derivada, importa el keypair público/privado de una estructura PrivateKeyInfo PKCS#8 después del descifrado, reemplazando las claves de este objeto.

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

Importa el keypair público/privado de una estructura RSAPrivateKey PKCS#1 después del descifrado, reemplazando las claves de este objeto.

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

Importa la clave pública desde una estructura RSAPublicKey de PKCS#1 después del descifrado, reemplazando las claves de este objeto.

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

Cuando se invalida en una clase derivada, importa la clave pública de una estructura SubjectPublicKeyInfo X.509 después del descifrado, reemplazando las claves de este objeto.

(Heredado de AsymmetricAlgorithm)
MemberwiseClone()

Crea una copia superficial del Objectactual.

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

Calcula el valor hash de la matriz de bytes especificada mediante el algoritmo hash y el modo de relleno especificados, y firma el valor hash resultante.

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

Calcula el valor hash de una parte de la matriz de bytes especificada mediante el algoritmo hash especificado y el modo de relleno, y firma el valor hash resultante.

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

Calcula el valor hash de un subconjunto de la matriz de bytes especificada mediante el algoritmo hash especificado y firma el valor hash resultante.

SignData(Byte[], Object)

Calcula el valor hash de la matriz de bytes especificada mediante el algoritmo hash especificado y firma el valor hash resultante.

SignData(Stream, HashAlgorithmName, RSASignaturePadding)

Calcula el valor hash de la secuencia especificada mediante el algoritmo hash y el modo de relleno especificados, y firma el valor hash resultante.

(Heredado de RSA)
SignData(Stream, Object)

Calcula el valor hash del flujo de entrada especificado mediante el algoritmo hash especificado y firma el valor hash resultante.

SignHash(Byte[], HashAlgorithmName, RSASignaturePadding)

Calcula la firma del valor hash especificado mediante el relleno especificado.

SignHash(Byte[], String)

Calcula la firma para el valor hash especificado.

ToString()

Devuelve una cadena que representa el objeto actual.

(Heredado de Object)
ToXmlString(Boolean)

Crea y devuelve una cadena XML que contiene la clave del objeto actual RSA .

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

Intenta descifrar los datos de entrada mediante el modo de relleno especificado, escribiendo el resultado en un búfer proporcionado.

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

Intenta cifrar los datos de entrada con un modo de relleno especificado en un búfer proporcionado.

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

Cuando se invalida en una clase derivada, intenta exportar la clave actual en el formato EncryptedPrivateKeyInfo de PKCS#8 en un búfer proporcionado, mediante una contraseña basada en bytes.

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

Cuando se invalida en una clase derivada, intenta exportar la clave actual en el formato EncryptedPrivateKeyInfo de PKCS#8 en un búfer proporcionado, mediante una contraseña basada en caracteres.

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

Cuando se reemplaza en una clase derivada, intenta exportar la clave actual en el formato PrivateKeyInfo PKCS#8 en un búfer proporcionado.

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

Intenta exportar la clave actual en el formato RSAPrivateKey PKCS#1 en un búfer proporcionado.

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

Intenta exportar la clave actual en el formato RSAPublicKey PKCS#1 en un búfer proporcionado.

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

Cuando se reemplaza en una clase derivada, intenta exportar la clave actual en el formato SubjectPublicKeyInfo X.509 en un búfer proporcionado.

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

Intenta calcular el hash de los datos proporcionados mediante el algoritmo especificado, escribiendo los resultados en un búfer proporcionado.

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

Intenta aplicar un hash a los datos proporcionados con el algoritmo especificado y firmar el hash con la clave actual, escribiendo la firma en un búfer proporcionado.

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

Intenta firmar el hash con la clave actual, escribiendo la firma en un búfer proporcionado.

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

Comprueba que una firma digital es válida calculando el valor hash de los datos especificados mediante el algoritmo hash y el relleno especificados, y comparándolo con la firma proporcionada.

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

Comprueba que una firma digital es válida calculando el valor hash de los datos en una parte de una matriz de bytes mediante el algoritmo hash y el relleno especificados, y comparándolo con la firma proporcionada.

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

Comprueba que una firma digital es válida al determinar el valor hash de la firma mediante la clave pública proporcionada y compararla con el valor hash de los datos proporcionados.

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

Comprueba que una firma digital es válida calculando el valor hash de los datos especificados mediante el algoritmo hash y el relleno especificados, y comparándolo con la firma proporcionada.

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

Comprueba que una firma digital es válida calculando el valor hash de la secuencia especificada mediante el algoritmo hash y el relleno especificados, y comparándolo con la firma proporcionada.

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

Comprueba que una firma digital es válida mediante la determinación del valor hash de la firma mediante el algoritmo hash especificado y el relleno, y comparándolo con el valor hash proporcionado.

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

Comprueba que una firma digital es válida al determinar el valor hash de la firma mediante la clave pública proporcionada y compararla con el valor hash proporcionado.

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

Comprueba que una firma digital es válida mediante la determinación del valor hash de la firma mediante el algoritmo hash y el relleno especificados, y comparándolo con el valor hash proporcionado.

(Heredado de RSA)

Implementaciones de interfaz explícitas

Nombre Description
IDisposable.Dispose()

Esta API admite la infraestructura de producto y no está pensada para usarse directamente en el código.

Para obtener una descripción de este miembro, vea Dispose().

(Heredado de AsymmetricAlgorithm)

Se aplica a

Consulte también