ProtectedData.Unprotect(Byte[], Byte[], DataProtectionScope) ProtectedData.Unprotect(Byte[], Byte[], DataProtectionScope) ProtectedData.Unprotect(Byte[], Byte[], DataProtectionScope) ProtectedData.Unprotect(Byte[], Byte[], DataProtectionScope) Method

Définition

Déchiffre les données contenues dans un tableau d'octets spécifié et retourne un tableau d'octets contenant les données déchiffrées.Decrypts the data in a specified byte array and returns a byte array that contains the decrypted data.

public:
 static cli::array <System::Byte> ^ Unprotect(cli::array <System::Byte> ^ encryptedData, cli::array <System::Byte> ^ optionalEntropy, System::Security::Cryptography::DataProtectionScope scope);
public static byte[] Unprotect (byte[] encryptedData, byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope);
static member Unprotect : byte[] * byte[] * System.Security.Cryptography.DataProtectionScope -> byte[]
Public Shared Function Unprotect (encryptedData As Byte(), optionalEntropy As Byte(), scope As DataProtectionScope) As Byte()

Paramètres

encryptedData
Byte[]

Un tableau d'octets contenant des données chiffrées à l'aide de la méthode Protect(Byte[], Byte[], DataProtectionScope).A byte array containing data encrypted using the Protect(Byte[], Byte[], DataProtectionScope) method.

optionalEntropy
Byte[]

Le tableau d'octets supplémentaire facultatif qui a été utilisé pour chiffrer les données, ou null si le tableau d'octets supplémentaire n'a pas été utilisé.An optional additional byte array that was used to encrypt the data, or null if the additional byte array was not used.

scope
DataProtectionScope DataProtectionScope DataProtectionScope DataProtectionScope

Une des valeurs d'énumération qui spécifie la portée de la protection des données utilisée pour chiffrer les données.One of the enumeration values that specifies the scope of data protection that was used to encrypt the data.

Retours

Byte[]

Tableau d'octets représentant les données déchiffrées.A byte array representing the decrypted data.

Exceptions

Le paramètre encryptedData a la valeur null.The encryptedData parameter is null.

Le système d'exploitation ne prend pas en charge cette méthode.The operating system does not support this method.

.NET Core uniquement : Les appels à la méthode Unprotect sont pris en charge uniquement sur les systèmes d’exploitation Windows..NET Core only: Calls to the Unprotect method are supported on Windows operating systems only.

Exemples

L’exemple de code suivant montre comment utiliser la protection des données.The following code example shows how to use data protection.

#using <System.Security.dll>

using namespace System;
using namespace System::Security::Cryptography;

public ref class DataProtectionSample
{
private:

   // Create byte array for additional entropy when using Protect method.
   static array<Byte>^s_aditionalEntropy = {9,8,7,6,5};

public:
   static void Main()
   {
      
      // Create a simple byte array containing data to be encrypted.
      array<Byte>^secret = {0,1,2,3,4,1,2,3,4};
      
      //Encrypt the data.
      array<Byte>^encryptedSecret = Protect( secret );
      Console::WriteLine( "The encrypted byte array is:" );
      PrintValues( encryptedSecret );
      
      // Decrypt the data and store in a byte array.
      array<Byte>^originalData = Unprotect( encryptedSecret );
      Console::WriteLine( "{0}The original data is:", Environment::NewLine );
      PrintValues( originalData );
   }

   static array<Byte>^ Protect( array<Byte>^data )
   {
      try
      {
         
         // Encrypt the data using DataProtectionScope.CurrentUser. The result can be decrypted
         //  only by the same current user.
         return ProtectedData::Protect( data, s_aditionalEntropy, DataProtectionScope::CurrentUser );
      }
      catch ( CryptographicException^ e ) 
      {
         Console::WriteLine( "Data was not encrypted. An error occurred." );
         Console::WriteLine( e );
         return nullptr;
      }
   }

   static array<Byte>^ Unprotect( array<Byte>^data )
   {
      try
      {
         
         //Decrypt the data using DataProtectionScope.CurrentUser.
         return ProtectedData::Unprotect( data, s_aditionalEntropy, DataProtectionScope::CurrentUser );
      }
      catch ( CryptographicException^ e ) 
      {
         Console::WriteLine( "Data was not decrypted. An error occurred." );
         Console::WriteLine( e );
         return nullptr;
      }
   }

   static void PrintValues( array<Byte>^myArr )
   {
      System::Collections::IEnumerator^ myEnum = myArr->GetEnumerator();
      while ( myEnum->MoveNext() )
      {
         Byte i = safe_cast<Byte>(myEnum->Current);
         Console::Write( "\t{0}", i );
      }

      Console::WriteLine();
   }
};

int main()
{
   DataProtectionSample::Main();
}
using System;
using System.Security.Cryptography;

public class DataProtectionSample
{
    // Create byte array for additional entropy when using Protect method.
    static byte [] s_aditionalEntropy = { 9, 8, 7, 6, 5 };

    public static void Main()
    {
        // Create a simple byte array containing data to be encrypted.
        byte [] secret = { 0, 1, 2, 3, 4, 1, 2, 3, 4 };

        //Encrypt the data.
        byte [] encryptedSecret = Protect( secret );
        Console.WriteLine("The encrypted byte array is:");
        PrintValues(encryptedSecret);

        // Decrypt the data and store in a byte array.
        byte [] originalData = Unprotect( encryptedSecret );
        Console.WriteLine("{0}The original data is:", Environment.NewLine);
        PrintValues(originalData);
    }

    public static byte [] Protect( byte [] data )
    {
        try
        {
            // Encrypt the data using DataProtectionScope.CurrentUser. The result can be decrypted
            // only by the same current user.
            return ProtectedData.Protect( data, s_aditionalEntropy, DataProtectionScope.CurrentUser );
        } 
        catch (CryptographicException e)
        {
            Console.WriteLine("Data was not encrypted. An error occurred.");
            Console.WriteLine(e.ToString());
            return null;
        }
    }

    public static byte [] Unprotect( byte [] data )
    {
        try
        {
            //Decrypt the data using DataProtectionScope.CurrentUser.
            return ProtectedData.Unprotect( data, s_aditionalEntropy, DataProtectionScope.CurrentUser );
        } 
        catch (CryptographicException e)
        {
            Console.WriteLine("Data was not decrypted. An error occurred.");
            Console.WriteLine(e.ToString());
            return null;
        }
    }

    public static void PrintValues( Byte[] myArr )  
    {
        foreach ( Byte i in myArr )  
        {
            Console.Write( "\t{0}", i );
        }
        Console.WriteLine();
    }
}
Imports System.Security.Cryptography



Public Class DataProtectionSample
    ' Create byte array for additional entropy when using Protect method.
    Private Shared s_aditionalEntropy As Byte() = {9, 8, 7, 6, 5}


    Public Shared Sub Main()
        ' Create a simple byte array containing data to be encrypted.
        Dim secret As Byte() = {0, 1, 2, 3, 4, 1, 2, 3, 4}

        'Encrypt the data.
        Dim encryptedSecret As Byte() = Protect(secret)
        Console.WriteLine("The encrypted byte array is:")
        PrintValues(encryptedSecret)

        ' Decrypt the data and store in a byte array.
        Dim originalData As Byte() = Unprotect(encryptedSecret)
        Console.WriteLine("{0}The original data is:", Environment.NewLine)
        PrintValues(originalData)

    End Sub


    Public Shared Function Protect(ByVal data() As Byte) As Byte()
        Try
            ' Encrypt the data using DataProtectionScope.CurrentUser. The result can be decrypted
            '  only by the same current user.
            Return ProtectedData.Protect(data, s_aditionalEntropy, DataProtectionScope.CurrentUser)
        Catch e As CryptographicException
            Console.WriteLine("Data was not encrypted. An error occurred.")
            Console.WriteLine(e.ToString())
            Return Nothing
        End Try

    End Function


    Public Shared Function Unprotect(ByVal data() As Byte) As Byte()
        Try
            'Decrypt the data using DataProtectionScope.CurrentUser.
            Return ProtectedData.Unprotect(data, s_aditionalEntropy, DataProtectionScope.CurrentUser)
        Catch e As CryptographicException
            Console.WriteLine("Data was not decrypted. An error occurred.")
            Console.WriteLine(e.ToString())
            Return Nothing
        End Try

    End Function


    Public Shared Sub PrintValues(ByVal myArr() As [Byte])
        Dim i As [Byte]
        For Each i In myArr
            Console.Write(vbTab + "{0}", i)
        Next i
        Console.WriteLine()

    End Sub
End Class

Remarques

Cette méthode peut être utilisée pour ôter la protection des données qui ont été chiffrées à l’aide de la Protect méthode.This method can be used to unprotect data that was encrypted using the Protect method. Si le optionalEntropy paramètre a été utilisé lors du chiffrement, il doit être fourni pour déchiffrer les données.If the optionalEntropy parameter was used during encryption, it must be supplied to unencrypt the data.

Notes

Si vous utilisez cette méthode lors de l’emprunt d’identité, vous pouvez recevoir l’erreur suivante: «La clé n’est pas valide pour une utilisation dans l’état spécifié.»If you use this method during impersonation, you may receive the following error: "Key not valid for use in specified state." Pour éviter cette erreur, chargez le profil de l’utilisateur dont vous souhaitez emprunter l’identité avant d’appeler la méthode.To prevent this error, load the profile of the user you want to impersonate before calling the method.

Sécurité

DataProtectionPermission
avec l’indicateur UnprotectData associé pour l’autorisation d’ôter la protection des données.with the associated UnprotectData flag for permission to unprotect data.

S’applique à