MachineKey.Protect(Byte[], String[]) Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Protege los datos especificados mediante el cifrado o la firma.
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()
Parámetros
- userData
- Byte[]
Datos que se van a proteger. Estos datos se pasan como texto no cifrado.
- purposes
- String[]
Lista de propósitos para los datos. Si se especifica este valor, se debe pasar la misma lista al Unprotect(Byte[], String[]) método para descifrar el texto cifrado devuelto.
Devoluciones
Datos de texto cifrado.
Excepciones
El userData parámetro es null.
La matriz de propósitos contiene una o varias entradas de solo espacio en blanco.
Comentarios
Este método reemplaza al Encode método , que requiere que el autor de la llamada especifique si los datos de texto no cifrado deben cifrarse, firmarse o ambos. El Protect método realiza la operación adecuada y protege de forma segura los datos. El método solo puede descifrar Unprotect los datos de texto cifrado generados por este método.
El purposes parámetro es una lista opcional de razones que pueden bloquear el texto cifrado a un propósito específico. Este parámetro permite aislar las operaciones criptográficas realizadas por distintos subsistemas dentro de una aplicación. Un cliente malintencionado no debe poder obtener el resultado del método de Protect un subsistema y alimentarlo como entrada al método de Unprotect otro subsistema, lo que podría poner en peligro la seguridad de la aplicación. El purposes parámetro ayuda a garantizar que los datos protegidos solo los pueda usar el componente que lo generó originalmente. Las aplicaciones deben asegurarse de que cada subsistema usa una lista única purposes .
Por ejemplo, para proteger o desproteger un token de autenticación, podría llamar al método mediante código como el ejemplo siguiente:
MachineKey.Protect(..., "Authentication token");
MachineKey.Unprotect(..., "Authentication token");
MachineKey.Protect(..., "Authentication token")
MachineKey.Unprotect(..., "Authentication token")
Las aplicaciones pueden generar dinámicamente el purposes parámetro . En ese caso, los valores proporcionados por el usuario con prefijos con un valor fijo (como " "Username: + nombre de usuario) para minimizar el riesgo de que un cliente malintencionado cree entradas que coincidan con un token que usa alguna otra parte del sistema. Las cadenas generadas dinámicamente deben aparecer después de cadenas fijas. Por ejemplo, para proteger o desproteger un mensaje privado vinculado a un usuario específico, use código como el ejemplo siguiente:
MachineKey.Protect(..., "Private message", "Recipient: " + username);
MachineKey.Unprotect(..., "Private message", "Recipient: " + username);
MachineKey.Protect(..., "Private message", "Recipient: " + username)
MachineKey.Unprotect(..., "Private message", "Recipient: " + username)
Cuando se llama al Unprotect método , el valor proporcionado para el purposes parámetro debe ser el mismo valor que se proporcionó al Protect método . De lo contrario, se producirá un error en la operación con una CryptographicException excepción.
Los valores de configuración necesarios para la MachineKeyCompatibilityMode.Framework45 opción son necesarios para este método aunque la MachineKeySection.CompatibilityMode propiedad no esté establecida en la Framework45 opción .