ProtectedData.Unprotect Método

Definición

Sobrecargas

Nombre Description
Unprotect(Byte[], Byte[], DataProtectionScope)

Descifra los datos de una matriz de bytes especificada y devuelve una matriz de bytes que contiene los datos descifrados.

Unprotect(ReadOnlySpan<Byte>, DataProtectionScope, ReadOnlySpan<Byte>)

Descifra los datos de una matriz de bytes especificada y devuelve una matriz de bytes que contiene los datos descifrados.

Unprotect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, ReadOnlySpan<Byte>)

Descifra los datos de un búfer especificado y escribe los datos descifrados en un búfer de destino.

Unprotect(Byte[], Byte[], DataProtectionScope)

Source:
ProtectedData.cs
Source:
ProtectedData.cs
Source:
ProtectedData.cs
Source:
ProtectedData.cs
Source:
ProtectedData.cs
Source:
ProtectedData.cs
Source:
ProtectedData.cs

Descifra los datos de una matriz de bytes especificada y devuelve una matriz de bytes que contiene los datos descifrados.

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);
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()

Parámetros

encryptedData
Byte[]

Matriz de bytes que contiene datos cifrados mediante el Protect(Byte[], Byte[], DataProtectionScope) método .

optionalEntropy
Byte[]

Matriz de bytes adicional opcional que se usó para cifrar los datos o null si no se usó la matriz de bytes adicional.

scope
DataProtectionScope

Uno de los valores de enumeración que especifica el ámbito de protección de datos que se usó para cifrar los datos.

Devoluciones

Byte[]

Matriz de bytes que representa los datos descifrados.

Excepciones

El encryptedData parámetro es null.

Error en el descifrado.

El sistema operativo no admite este método.

Memoria insuficiente.

solo .NET Core y .NET 5+: las llamadas al método />

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar la protección de datos.

using System;
using System.Security.Cryptography;

public class DataProtectionSample
{
    // Create byte array for additional entropy when using Protect method.
    static byte [] s_additionalEntropy = { 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_additionalEntropy, 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_additionalEntropy, 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_additionalEntropy 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_additionalEntropy, 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_additionalEntropy, 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

Comentarios

Este método se puede usar para desproteger datos cifrados mediante el Protect método . Si el parámetro se usó durante el optionalEntropy cifrado, se debe proporcionar para descifrar los datos.

Note

Si usa este método durante la suplantación, puede recibir el siguiente error: "La clave no es válida para su uso en el estado especificado". Para evitar este error, cargue el perfil del usuario que desea suplantar antes de llamar al método .

Se aplica a

Unprotect(ReadOnlySpan<Byte>, DataProtectionScope, ReadOnlySpan<Byte>)

Source:
ProtectedData.cs
Source:
ProtectedData.cs
Source:
ProtectedData.cs

Descifra los datos de una matriz de bytes especificada y devuelve una matriz de bytes que contiene los datos descifrados.

public static byte[] Unprotect(ReadOnlySpan<byte> encryptedData, System.Security.Cryptography.DataProtectionScope scope, ReadOnlySpan<byte> optionalEntropy = default);
static member Unprotect : ReadOnlySpan<byte> * System.Security.Cryptography.DataProtectionScope * ReadOnlySpan<byte> -> byte[]
Public Shared Function Unprotect (encryptedData As ReadOnlySpan(Of Byte), scope As DataProtectionScope, Optional optionalEntropy As ReadOnlySpan(Of Byte) = Nothing) As Byte()

Parámetros

encryptedData
ReadOnlySpan<Byte>

Búfer que contiene datos que se van a descifrar.

scope
DataProtectionScope

Uno de los valores de enumeración que especifica el ámbito de cifrado.

optionalEntropy
ReadOnlySpan<Byte>

Un búfer adicional opcional que se usa para aumentar la complejidad del cifrado o vacío sin complejidad adicional.

Devoluciones

Byte[]

Matriz de bytes que representa los datos cifrados.

Excepciones

Error de cifrado.

El sistema operativo no admite este método.

El sistema se quedó sin memoria mientras descifra los datos.

El sistema operativo no es Windows.

Se aplica a

Unprotect(ReadOnlySpan<Byte>, DataProtectionScope, Span<Byte>, ReadOnlySpan<Byte>)

Source:
ProtectedData.cs
Source:
ProtectedData.cs
Source:
ProtectedData.cs

Descifra los datos de un búfer especificado y escribe los datos descifrados en un búfer de destino.

public static int Unprotect(ReadOnlySpan<byte> encryptedData, System.Security.Cryptography.DataProtectionScope scope, Span<byte> destination, ReadOnlySpan<byte> optionalEntropy = default);
static member Unprotect : ReadOnlySpan<byte> * System.Security.Cryptography.DataProtectionScope * Span<byte> * ReadOnlySpan<byte> -> int
Public Shared Function Unprotect (encryptedData As ReadOnlySpan(Of Byte), scope As DataProtectionScope, destination As Span(Of Byte), Optional optionalEntropy As ReadOnlySpan(Of Byte) = Nothing) As Integer

Parámetros

encryptedData
ReadOnlySpan<Byte>

Búfer que contiene datos que se van a descifrar.

scope
DataProtectionScope

Uno de los valores de enumeración que especifica el ámbito de cifrado.

destination
Span<Byte>

Búfer para recibir los datos descifrados.

optionalEntropy
ReadOnlySpan<Byte>

Un búfer adicional opcional que se usa para aumentar la complejidad del cifrado o vacío sin complejidad adicional.

Devoluciones

Número total de bytes escritos en destination

Excepciones

El búfer en destination es demasiado pequeño para contener los datos descifrados.

Error de cifrado.

El sistema operativo no admite este método.

El sistema se quedó sin memoria al cifrar los datos.

El sistema operativo no es Windows.

Se aplica a