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 параметра.