MachineKey.Protect(Byte[], String[]) Метод

Определение

Защищает указанные данные путем шифрования или подписи.

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

Параметры

userData
Byte[]

Данные, защиту которых требуется обеспечить. Эти данные передаются в виде простого текста.

purposes
String[]

Список целей данных. Если это значение задано, то один и тот же список должен быть передан в метод Unprotect(Byte[], String[]) для расшифровки возвращаемых зашифрованных данных.

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

Byte[]

Сведения о зашифрованного текста.

Исключения

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

Массив назначений содержит одну запись, содержащую только символы пробелов, или несколько.

Комментарии

Этот метод заменяет метод, который требует от вызывающего объекта указать, должны ли данные открытого текста быть зашифрованы Encode , подписаны или оба. Метод Protect выполняет соответствующую операцию и безопасно защищает данные. Данные шифра, созданные этим методом, могут быть расшифрованы только методом Unprotect .

Параметр purposes является необязательным списком причин, которые могут заблокировать зашифрованный текст определенной цели. Этот параметр позволяет изолировать криптографические операции, выполняемые различными подсистемами в приложении. Вредоносный клиент не может получить результат метода одной подсистемы и передать его в качестве входных данных в метод другой подсистемы Protect Unprotect , что может нарушить безопасность приложений. Этот purposes параметр помогает гарантировать, что защищенные данные можно использовать только компонентом, который его создал. Приложения должны убедиться, что каждая подсистема использует уникальный purposes список.

Например, для защиты или отмены защиты маркера проверки подлинности можно вызвать метод, используя код, как показано в следующем примере:

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

Приложения могут динамически создавать purposes параметр. В этом случае префикс значений, предоставленных пользователем, с фиксированным значением (например, "Username: + имя пользователя), чтобы свести к минимуму риск создания вредоносного клиента ввода, соответствующего маркеру, используемому какой-то другой частью системы. Все динамически создаваемые строки должны поступать после фиксированных строк. Например, чтобы защитить или снять защиту частного сообщения, привязанного к конкретному пользователю, используйте код, как показано в следующем примере:

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

При вызове Unprotect метода значение, указанное для purposes параметра, должно быть таким же значением, которое было предоставлено методу Protect . В противном случае операция завершится ошибкой CryptographicException с исключением.

Параметры конфигурации, необходимые для MachineKeyCompatibilityMode.Framework45 параметра, необходимы для этого метода, даже если MachineKeySection.CompatibilityMode свойство не задано для Framework45 параметра.

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