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[]) тот же список.
Возвращаемое значение
Данные шифра.
Исключения
Параметр 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 параметра.