Partager via


MachineKey.Protect(Byte[], String[]) Méthode

Définition

Protège les données spécifiées par chiffrement ou signature.

public:
 static cli::array <System::Byte> ^ Protect(cli::array <System::Byte> ^ userData, ... cli::array <System::String ^> ^ purposes);
public static byte[] Protect (byte[] userData, params string[] purposes);
static member Protect : byte[] * string[] -> byte[]
Public Shared Function Protect (userData As Byte(), ParamArray purposes As String()) As Byte()

Paramètres

userData
Byte[]

Données à protéger. Ces données sont passées en texte brut.

purposes
String[]

Liste des objectifs pour les données. Si cette valeur est spécifiée, la même liste doit être passée à la méthode Unprotect(Byte[], String[]) pour déchiffrer le texte chiffré retourné.

Retours

Byte[]

Les données de texte chiffré.

Exceptions

Le paramètre userData est null.

Le tableau des objectifs contient une ou plusieurs entrées composées uniquement d’espaces blancs.

Remarques

Cette méthode remplace la Encode méthode, qui nécessite que l’appelant spécifie si les données en texte clair doivent être chiffrées, signées ou les deux. La Protect méthode effectue l’opération appropriée et protège en toute sécurité les données. Les données de texte chiffré produites par cette méthode ne peuvent être déchiffrés que par la Unprotect méthode.

Le purposes paramètre est une liste facultative de raisons qui peuvent verrouiller le texte chiffré à un objectif spécifique. Ce paramètre vous permet d’isoler les opérations de chiffrement effectuées par différents sous-systèmes au sein d’une application. Un client malveillant ne doit pas être en mesure d’obtenir le résultat de la méthode d’un sous-système et de Protect l’alimenter comme entrée dans la méthode d’un autre sous-système, ce qui peut compromettre la sécurité des Unprotect applications. Le purposes paramètre permet de s’assurer que les données protégées ne peuvent être utilisées que par le composant qui l’a générée à l’origine. Les applications doivent s’assurer que chaque sous-système utilise une liste unique purposes .

Par exemple, pour protéger ou annuler la protection d’un jeton d’authentification, vous pouvez appeler la méthode à l’aide de code comme dans l’exemple suivant :

MachineKey.Protect(..., "Authentication token");  
MachineKey.Unprotect(..., "Authentication token");  
MachineKey.Protect(..., "Authentication token")  
MachineKey.Unprotect(..., "Authentication token")  

Les applications peuvent générer dynamiquement le purposes paramètre. Dans ce cas, préfixez les valeurs fournies par l’utilisateur avec une valeur fixe (par exemple, « +Username: nom d’utilisateur) pour réduire le risque d’une entrée de création de client malveillante qui correspond à un jeton utilisé par une autre partie du système. Toutes les chaînes générées dynamiquement doivent se produire après des chaînes fixes. Par exemple, pour protéger ou annuler la protection d’un message privé lié à un utilisateur spécifique, utilisez du code comme dans l’exemple suivant :

MachineKey.Protect(..., "Private message", "Recipient: " + username);  
MachineKey.Unprotect(..., "Private message", "Recipient: " + username);  
MachineKey.Protect(..., "Private message", "Recipient: " + username)  
MachineKey.Unprotect(..., "Private message", "Recipient: " + username)  

Lorsque la Unprotect méthode est appelée, la valeur fournie pour le purposes paramètre doit être la même que celle fournie à la Protect méthode. Sinon, l’opération échoue avec une CryptographicException exception.

Les paramètres de configuration requis pour l’option MachineKeyCompatibilityMode.Framework45 sont requis pour cette méthode même si la MachineKeySection.CompatibilityMode propriété n’est pas définie sur l’option Framework45 .

S’applique à