Cet article a fait l'objet d'une traduction manuelle. Déplacez votre pointeur sur les phrases de l'article pour voir la version originale de ce texte.
Traduction
Source
Ce sujet n'a pas encore été évalué - Évaluez ce sujet

RSACryptoServiceProvider, classe

Procède au chiffrement et au déchiffrement asymétriques à l'aide de l'implémentation de l'algorithme RSA fourni par le fournisseur de services de chiffrement (CSP). Cette classe ne peut pas être héritée.

System.Object
  System.Security.Cryptography.AsymmetricAlgorithm
    System.Security.Cryptography.RSA
      System.Security.Cryptography.RSACryptoServiceProvider

Espace de noms :  System.Security.Cryptography
Assembly :  mscorlib (dans mscorlib.dll)
[ComVisibleAttribute(true)]
public sealed class RSACryptoServiceProvider : RSA, 
	ICspAsymmetricAlgorithm

Le type RSACryptoServiceProvider expose les membres suivants.

  Nom Description
Méthode publique RSACryptoServiceProvider() Initialise une nouvelle instance de la classe RSACryptoServiceProvider à l'aide de la clé par défaut.
Méthode publique RSACryptoServiceProvider(CspParameters) Initialise une nouvelle instance de la classe RSACryptoServiceProvider avec les paramètres spécifiés.
Méthode publique RSACryptoServiceProvider(Int32) Initialise une nouvelle instance de la classe RSACryptoServiceProvider avec la taille de clé spécifiée.
Méthode publique RSACryptoServiceProvider(Int32, CspParameters) Initialise une nouvelle instance de la classe RSACryptoServiceProvider avec la taille et les paramètres de clé spécifiés.
Début
  Nom Description
Propriété publique CspKeyContainerInfo Obtient un objet CspKeyContainerInfo qui décrit des informations supplémentaires sur une paire de clés de chiffrement.
Propriété publique KeyExchangeAlgorithm Obtient le nom de l'algorithme d'échange de clés disponible avec cette implémentation de RSA. (Substitue AsymmetricAlgorithm.KeyExchangeAlgorithm.)
Propriété publique KeySize Obtient la taille de la clé en cours. (Substitue AsymmetricAlgorithm.KeySize.)
Propriété publique LegalKeySizes Obtient les tailles de clé prises en charge par l'algorithme asymétrique. (Hérité de AsymmetricAlgorithm.)
Propriété publique PersistKeyInCsp Obtient ou définit une valeur qui indique si la clé doit être persistante dans le fournisseur de services de chiffrement (CSP).
Propriété publique PublicOnly Obtient une valeur qui indique si l'objet RSACryptoServiceProvider ne contient qu'une clé publique.
Propriété publique SignatureAlgorithm Obtient le nom de l'algorithme de signature disponible avec cette implémentation de RSA. (Substitue AsymmetricAlgorithm.SignatureAlgorithm.)
Propriété publique Membre statique UseMachineKeyStore Obtient ou définit une valeur qui indique si la clé doit être persistante dans le magasin de clés de l'ordinateur plutôt que dans celui des profils utilisateur.
Début
  Nom Description
Méthode publique Clear Libère toutes les ressources utilisées par la classe AsymmetricAlgorithm. (Hérité de AsymmetricAlgorithm.)
Méthode publique Decrypt Déchiffre les données avec l'algorithme RSA.
Méthode publique DecryptValue Cette méthode n'est pas prise en charge dans la version actuelle. (Substitue RSA.DecryptValue(Byte[]).)
Méthode publique Dispose() Libère toutes les ressources utilisées par l'instance actuelle de la classe AsymmetricAlgorithm. (Hérité de AsymmetricAlgorithm.)
Méthode protégée Dispose(Boolean) Libère les ressources non managées utilisées par la classe AsymmetricAlgorithm et libère éventuellement les ressources managées. (Hérité de AsymmetricAlgorithm.)
Méthode publique Encrypt Chiffre les données avec l'algorithme RSA.
Méthode publique EncryptValue Cette méthode n'est pas prise en charge dans la version actuelle. (Substitue RSA.EncryptValue(Byte[]).)
Méthode publique Equals(Object) Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.)
Méthode publique ExportCspBlob Exporte un blob qui contient les informations de clé associées à un objet RSACryptoServiceProvider.
Méthode publique ExportParameters Exporte les RSAParameters. (Substitue RSA.ExportParameters(Boolean).)
Méthode protégée Finalize Autorise un objet à tenter de libérer des ressources et d'exécuter d'autres opérations de netto***ge avant qu'il ne soit récupéré par l'opération garbage collection. (Hérité de Object.)
Méthode publique FromXmlString Initialise un objet RSA à partir des informations clés d'une chaîne XML. (Hérité de RSA.)
Méthode publique GetHashCode Sert de fonction de hachage pour un type particulier. (Hérité de Object.)
Méthode publique GetType Obtient le Type de l'instance actuelle. (Hérité de Object.)
Méthode publique ImportCspBlob Importe un objet blob qui représente des informations relatives aux clés RSA.
Méthode publique ImportParameters Importe les RSAParameters spécifiés. (Substitue RSA.ImportParameters(RSAParameters).)
Méthode protégée MemberwiseClone Crée une copie superficielle de l'objet Object actif. (Hérité de Object.)
Méthode publique SignData(Byte[], Object) Calcule la valeur de hachage du tableau d'octets spécifié à l'aide de l'algorithme de hachage spécifié et signe la valeur de hachage qui en résulte.
Méthode publique SignData(Stream, Object) Calcule la valeur de hachage du flux d'entrée spécifié à l'aide de l'algorithme de hachage spécifié et signe la valeur de hachage qui en résulte.
Méthode publique SignData(Byte[], Int32, Int32, Object) Calcule la valeur de hachage d'un sous-ensemble du tableau d'octets spécifié à l'aide de l'algorithme de hachage spécifié et signe la valeur de hachage résultante.
Méthode publique SignHash Calcule la signature pour la valeur de hachage spécifiée en la chiffrant avec la clé privée.
Méthode publique ToString Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.)
Méthode publique ToXmlString Crée et retourne une chaîne XML contenant la clé de l'objet RSA en cours. (Hérité de RSA.)
Méthode publique VerifyData Vérifie qu'une signature numérique est valide en déterminant la valeur de hachage dans la signature en utilisant la clé publique fournie et en la comparant à la valeur de hachage des données fournies.
Méthode publique VerifyHash Vérifie qu'une signature numérique est valide en déterminant la valeur de hachage dans la signature en utilisant la clé publique fournie et en la comparant à la valeur de hachage fournie.
Début
  Nom Description
Champ protégé KeySizeValue Représente la taille, en bits, du modulo de la clé utilisé par l'algorithme asymétrique. (Hérité de AsymmetricAlgorithm.)
Champ protégé LegalKeySizesValue Spécifie les tailles de clé prises en charge par l'algorithme asymétrique. (Hérité de AsymmetricAlgorithm.)
Début

Il s'agit de l'implémentation par défaut de RSA.

RSACryptoServiceProvider prend en charge des longueurs de clé allant de 384 bits à 16 384 bits dans des incréments de 8 bits si Microsoft Enhanced Cryptographic Provider est installé. Il prend en charge des longueurs de clé allant de 384 bits à 512 bits dans des incréments de 8 bits si Microsoft Base Cryptographic Provider est installé.

Interopérabilité avec l'API Microsoft Cryptography API (CAPI)

Contrairement à l'implémentation RSA dans l'API Microsoft Cryptography API (CAPI) non managée, la classe RSACryptoServiceProvider inverse l'ordre d'un tableau d'octets chiffré, après le chiffrement et avant le déchiffrement. Par défaut, les données chiffrées par la classe RSACryptoServiceProvider ne peuvent pas être déchiffrées par la fonction CAPI CryptDecrypt ; par ailleurs, les données chiffrées par la méthode CAPI CryptEncrypt ne peuvent pas être déchiffrées par la classe RSACryptoServiceProvider.

Si vous ne compensez pas l'inversion de l'ordre lors des actions d'interopérabilité entre les API, la classe RSACryptoServiceProvider lève CryptographicException.

Pour interagir avec l'API Microsoft Cryptography API (CAPI), vous devez inverser manuellement l'ordre des octets chiffrés avant que les données chiffrées n'interagissent avec une autre API. Vous pouvez facilement inverser l'ordre d'un tableau d'octets managé en appelant la méthode Array.Reverse.

L'exemple de code suivant utilise la classe RSACryptoServiceProvider pour chiffrer une chaîne en tableau d'octets, puis déchiffrer les octets en chaîne.


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.");

        }
    }

    static public 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
                //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);
            }
            return encryptedData;
        }
        //Catch and display a CryptographicException  
        //to the console.
        catch (CryptographicException e)
        {
            Console.WriteLine(e.Message);

            return null;
        }

    }

    static public 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;
        }

    }
}


L'exemple de code suivant exporte les informations relatives aux clés et créées avec RSACryptoServiceProvider dans un objet RSAParameters.


		try
		{
			//Create a new RSACryptoServiceProvider object.
			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);

		}


.NET Framework

Pris en charge dans : 4, 3.5, 3.0, 2.0, 1.1, 1.0

.NET Framework Client Profile

Pris en charge dans : 4, 3.5 SP1

Windows 7, Windows Vista SP1 ou ultérieur, Windows XP SP3, Windows XP SP2 Édition x64, Windows Server 2008 (installation minimale non prise en charge), Windows Server 2008 R2 (installation minimale prise en charge avec SP1 ou version ultérieure), Windows Server 2003 SP2

Le .NET Framework ne prend pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.
Tous les membres static (Shared en Visual Basic) publics de ce type sont thread-safe. Il n'est pas garanti que les membres d'instance soient thread-safe.
Cela vous a-t-il été utile ?
(1500 caractères restants)
Contenu de la communauté Ajouter
Annotations FAQ
Microsoft réalise une enquête en ligne pour recueillir votre opinion sur le site Web de MSDN. Si vous choisissez d’y participer, cette enquête en ligne vous sera présentée lorsque vous quitterez le site Web de MSDN.

Si vous souhaitez y participer,