ProtectedData.Protect Método

Definición

Cifra los datos de un búfer especificado y escribe los datos cifrados en un búfer de destino.

Sobrecargas

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

Cifra los datos de una matriz de bytes especificada y devuelve una matriz de bytes que contiene los datos cifrados.

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

Cifra los datos en un intervalo de bytes especificado y devuelve una matriz de bytes que contiene los datos cifrados.

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

Cifra los datos de un búfer especificado y escribe los datos cifrados en un búfer de destino.

Protect(Byte[], Byte[], DataProtectionScope)

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

Cifra los datos de una matriz de bytes especificada y devuelve una matriz de bytes que contiene los datos cifrados.

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

Parámetros

userData
Byte[]

Matriz de bytes que contiene datos que se van a cifrar.

optionalEntropy
Byte[]

Matriz de bytes adicional opcional que se usa para aumentar la complejidad del cifrado o null para no tener ninguna complejidad adicional.

scope
DataProtectionScope

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

Devoluciones

Byte[]

Matriz de bytes que representa los datos cifrados.

Excepciones

El userData parámetro es null.

Error de cifrado.

El sistema operativo no admite este método.

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

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

Ejemplos

En el ejemplo 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 cifrar datos como contraseñas, claves o cadenas de conexión. El optionalEntropy parámetro permite agregar datos para aumentar la complejidad del cifrado; especifique null sin complejidad adicional. Si se proporciona, esta información también se debe usar al descifrar los datos mediante el Unprotect método .

Nota

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

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

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

Cifra los datos en un intervalo de bytes especificado y devuelve una matriz de bytes que contiene los datos cifrados.

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

Parámetros

userData
ReadOnlySpan<Byte>

Búfer que contiene los datos que se van a cifrar.

scope
DataProtectionScope

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

optionalEntropy
ReadOnlySpan<Byte>

Un intervalo de bytes adicional opcional que se usa para aumentar la complejidad del cifrado o vacío sin ninguna 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 al cifrar los datos.

El sistema operativo no es Windows.

Se aplica a

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

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

Cifra los datos de un búfer especificado y escribe los datos cifrados en un búfer de destino.

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

Parámetros

userData
ReadOnlySpan<Byte>

Búfer que contiene los datos que se van a cifrar.

scope
DataProtectionScope

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

destination
Span<Byte>

Búfer para recibir los datos cifrados.

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 de destination es demasiado pequeño para contener los datos cifrados.

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