MachineKey.Protect(Byte[], String[]) Método
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Protege os dados especificados encriptando-os ou assinando-os.
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[]
Os dados a proteger. Estes dados são transmitidos em texto simples.
- purposes
- String[]
Uma lista de finalidades para os dados. Se este valor for especificado, a mesma lista deve ser passada ao Unprotect(Byte[], String[]) método para decifrar o texto cifrado devolvido.
Devoluções
Os dados cifrados.
Exceções
O userData parâmetro é nulo.
O array de propósitos contém uma ou mais entradas apenas em espaços em branco.
Observações
Este método substitui o Encode método, que exige que o chamador especifique se os dados do texto simples devem ser encriptados, assinados ou ambos. O Protect método executa a operação apropriada e protege os dados de forma segura. Os dados cifrados produzidos por este método só podem ser decifrados pelo próprio Unprotect método.
O purposes parâmetro é uma lista opcional de razões que podem bloquear o texto cifrado a um propósito específico. Este parâmetro permite isolar operações criptográficas realizadas por diferentes subsistemas dentro de uma aplicação. Um cliente malicioso não deve conseguir obter o resultado do método de Protect um subsistema e alimentá-lo como entrada para o método de Unprotect outro subsistema, o que poderia comprometer a segurança da aplicação. O purposes parâmetro ajuda a garantir que os dados protegidos só possam ser usados pelo componente que originalmente os gerou. As aplicações devem garantir que cada subsistema utiliza uma lista única purposes .
Por exemplo, para proteger ou desproteger um token de autenticação, pode chamar o método usando código como o seguinte exemplo:
MachineKey.Protect(..., "Authentication token");
MachineKey.Unprotect(..., "Authentication token");
MachineKey.Protect(..., "Authentication token")
MachineKey.Unprotect(..., "Authentication token")
As aplicações podem gerar dinamicamente o purposes parâmetro. Nesse caso, prefixe valores fornecidos pelo utilizador com um valor fixo (como "Username: " + nome de utilizador) para minimizar o risco de um cliente malicioso criar uma entrada que corresponda a um token usado por outra parte do sistema. Quaisquer cadeias geradas dinamicamente devem vir depois de cadeias fixas. Por exemplo, para proteger ou desproteger uma mensagem privada ligada a um utilizador específico, use código como o seguinte exemplo:
MachineKey.Protect(..., "Private message", "Recipient: " + username);
MachineKey.Unprotect(..., "Private message", "Recipient: " + username);
MachineKey.Protect(..., "Private message", "Recipient: " + username)
MachineKey.Unprotect(..., "Private message", "Recipient: " + username)
Quando o Unprotect método é chamado, o valor fornecido para o purposes parâmetro deve ser o mesmo valor fornecido ao Protect método. Caso contrário, a operação falha com exceção CryptographicException .
As definições de configuração exigidas para a MachineKeyCompatibilityMode.Framework45 opção são necessárias para este método mesmo que a MachineKeySection.CompatibilityMode propriedade não esteja definida para a Framework45 opção.