Прочитать на английском

Поделиться через


ProtectedData.Protect Метод

Определение

Перегрузки

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

Зашифровывает данные в заданном массиве байтов и возвращает массив байтов, содержащий зашифрованные данные.

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

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

Исходный код:
ProtectedData.cs
Исходный код:
ProtectedData.cs
Исходный код:
ProtectedData.cs
Исходный код:
ProtectedData.cs
Исходный код:
ProtectedData.cs

Зашифровывает данные в заданном массиве байтов и возвращает массив байтов, содержащий зашифрованные данные.

C#
public static byte[] Protect(byte[] userData, byte[]? optionalEntropy, System.Security.Cryptography.DataProtectionScope scope);
C#
public static byte[] Protect(byte[] userData, byte[] optionalEntropy, System.Security.Cryptography.DataProtectionScope scope);

Параметры

userData
Byte[]

Массив байтов, содержащий данные для зашифровки.

optionalEntropy
Byte[]

Необязательный дополнительный байтовый массив, который используется для увеличения сложности шифрования, или null для отсутствия дополнительной сложности.

scope
DataProtectionScope

Одно из значений перечисления, определяющее область шифрования.

Возвращаемое значение

Byte[]

Массив байтов, представляющий зашифрованные данные.

Исключения

Параметр userData имеет значение null.

Сбой шифрования.

Этот метод не поддерживается операционной системой.

Системе не хватило памяти для зашифрования данных.

Только .NET Core и .NET 5+. Вызовы Protect метода поддерживаются только в операционных системах Windows.

Примеры

В следующем примере показано, как использовать защиту данных.

C#
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();
    }
}

Комментарии

Этот метод можно использовать для шифрования данных, таких как пароли, ключи или строки подключения. Параметр optionalEntropy позволяет добавлять данные, чтобы повысить сложность шифрования; укажите null без дополнительной сложности. Если они указаны, эти сведения также должны использоваться при расшифровке данных с помощью Unprotect метода .

Примечание

При использовании этого метода во время олицетворения может возникнуть следующая ошибка: "Ключ недействителен для использования в указанном состоянии". Чтобы избежать этой ошибки, перед вызовом метода загрузите профиль пользователя, которого вы хотите олицетворить.

Применяется к

Продукт Версии

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

Исходный код:
ProtectedData.cs
C#
public static byte[] Protect(ReadOnlySpan<byte> userData, System.Security.Cryptography.DataProtectionScope scope, ReadOnlySpan<byte> optionalEntropy = default);

Параметры

userData
ReadOnlySpan<Byte>
optionalEntropy
ReadOnlySpan<Byte>

Возвращаемое значение

Byte[]

Применяется к

Продукт Версии

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

Исходный код:
ProtectedData.cs
C#
public static int Protect(ReadOnlySpan<byte> userData, System.Security.Cryptography.DataProtectionScope scope, Span<byte> destination, ReadOnlySpan<byte> optionalEntropy = default);

Параметры

userData
ReadOnlySpan<Byte>
destination
Span<Byte>
optionalEntropy
ReadOnlySpan<Byte>

Возвращаемое значение

Применяется к

Продукт Версии