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
|
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.Security.Cryptography.AsymmetricAlgorithm
System.Security.Cryptography.RSA
System.Security.Cryptography.RSACryptoServiceProvider
Assembly : mscorlib (dans mscorlib.dll)
Le type RSACryptoServiceProvider expose les membres suivants.
| Nom | Description | |
|---|---|---|
|
RSACryptoServiceProvider() | Initialise une nouvelle instance de la classe RSACryptoServiceProvider à l'aide de la clé par défaut. |
|
RSACryptoServiceProvider(CspParameters) | Initialise une nouvelle instance de la classe RSACryptoServiceProvider avec les paramètres spécifiés. |
|
RSACryptoServiceProvider(Int32) | Initialise une nouvelle instance de la classe RSACryptoServiceProvider avec la taille de clé spécifiée. |
|
RSACryptoServiceProvider(Int32, CspParameters) | Initialise une nouvelle instance de la classe RSACryptoServiceProvider avec la taille et les paramètres de clé spécifiés. |
| Nom | Description | |
|---|---|---|
|
CspKeyContainerInfo | Obtient un objet CspKeyContainerInfo qui décrit des informations supplémentaires sur une paire de clés de chiffrement. |
|
KeyExchangeAlgorithm | Obtient le nom de l'algorithme d'échange de clés disponible avec cette implémentation de RSA. (Substitue AsymmetricAlgorithm.KeyExchangeAlgorithm.) |
|
KeySize | Obtient la taille de la clé en cours. (Substitue AsymmetricAlgorithm.KeySize.) |
|
LegalKeySizes | Obtient les tailles de clé prises en charge par l'algorithme asymétrique. (Hérité de AsymmetricAlgorithm.) |
|
PersistKeyInCsp | Obtient ou définit une valeur qui indique si la clé doit être persistante dans le fournisseur de services de chiffrement (CSP). |
|
PublicOnly | Obtient une valeur qui indique si l'objet RSACryptoServiceProvider ne contient qu'une clé publique. |
|
SignatureAlgorithm | Obtient le nom de l'algorithme de signature disponible avec cette implémentation de RSA. (Substitue AsymmetricAlgorithm.SignatureAlgorithm.) |
|
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. |
| Nom | Description | |
|---|---|---|
|
Clear | Libère toutes les ressources utilisées par la classe AsymmetricAlgorithm. (Hérité de AsymmetricAlgorithm.) |
|
Decrypt | Déchiffre les données avec l'algorithme RSA. |
|
DecryptValue | Cette méthode n'est pas prise en charge dans la version actuelle. (Substitue RSA.DecryptValue(Byte[]).) |
|
Dispose() | Libère toutes les ressources utilisées par l'instance actuelle de la classe AsymmetricAlgorithm. (Hérité de AsymmetricAlgorithm.) |
|
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.) |
|
Encrypt | Chiffre les données avec l'algorithme RSA. |
|
EncryptValue | Cette méthode n'est pas prise en charge dans la version actuelle. (Substitue RSA.EncryptValue(Byte[]).) |
|
Equals(Object) | Détermine si l'Object spécifié est égal à l'Object en cours. (Hérité de Object.) |
|
ExportCspBlob | Exporte un blob qui contient les informations de clé associées à un objet RSACryptoServiceProvider. |
|
ExportParameters | Exporte les RSAParameters. (Substitue RSA.ExportParameters(Boolean).) |
|
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.) |
|
FromXmlString | Initialise un objet RSA à partir des informations clés d'une chaîne XML. (Hérité de RSA.) |
|
GetHashCode | Sert de fonction de hachage pour un type particulier. (Hérité de Object.) |
|
GetType | Obtient le Type de l'instance actuelle. (Hérité de Object.) |
|
ImportCspBlob | Importe un objet blob qui représente des informations relatives aux clés RSA. |
|
ImportParameters | Importe les RSAParameters spécifiés. (Substitue RSA.ImportParameters(RSAParameters).) |
|
MemberwiseClone | Crée une copie superficielle de l'objet Object actif. (Hérité de Object.) |
|
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. |
|
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. |
|
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. |
|
SignHash | Calcule la signature pour la valeur de hachage spécifiée en la chiffrant avec la clé privée. |
|
ToString | Retourne une chaîne qui représente l'objet actuel. (Hérité de Object.) |
|
ToXmlString | Crée et retourne une chaîne XML contenant la clé de l'objet RSA en cours. (Hérité de RSA.) |
|
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. |
|
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. |
| Nom | Description | |
|---|---|---|
|
KeySizeValue | Représente la taille, en bits, du modulo de la clé utilisé par l'algorithme asymétrique. (Hérité de AsymmetricAlgorithm.) |
|
LegalKeySizesValue | Spécifie les tailles de clé prises en charge par l'algorithme asymétrique. (Hérité de AsymmetricAlgorithm.) |
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); }
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.