Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
A partir do .NET 11, os RSACryptoServiceProvider.Encrypt(Byte[], Boolean) métodos e RSACryptoServiceProvider.Decrypt(Byte[], Boolean) estão obsoletos. Chamar estes métodos em código gera avisos SYSLIB0064 em tempo de compilação.
Motivo da obsolescência
Quando o fOAEP parâmetro é true, estes métodos utilizam sempre SHA-1 como algoritmo de resumo para o Preenchimento de Encriptação Assimétrica Ótima (OAEP). O algoritmo de hash é implícito e não pode ser alterado. Use sobrecargas que aceitem um argumento explícito RSAEncryptionPadding em vez disso. Estas sobrecargas tornam o algoritmo de hash explícito, dão-lhe mais flexibilidade na escolha de um algoritmo de hash e ajudam a evitar o uso acidental do OAEP-SHA-1. Quando precisares de OAEP, prefere RSAEncryptionPadding.OaepSHA256 ou seja mais forte em vez de migrar para RSAEncryptionPadding.OaepSHA1 por defeito, a menos que precises de SHA-1 para compatibilidade.
Solução
Substitua chamadas para as sobrecargas obsoletas pelas correspondentes sobrecargas que aceitam um RSAEncryptionPadding argumento:
| Chamada obsoleta | Substituição |
|---|---|
Encrypt(data, fOAEP: true) |
Encrypt(data, RSAEncryptionPadding.OaepSHA1) |
Encrypt(data, fOAEP: false) |
Encrypt(data, RSAEncryptionPadding.Pkcs1) |
Decrypt(data, fOAEP: true) |
Decrypt(data, RSAEncryptionPadding.OaepSHA1) |
Decrypt(data, fOAEP: false) |
Decrypt(data, RSAEncryptionPadding.Pkcs1) |
Suprimir um aviso
Se você precisar usar a API obsoleta, poderá suprimir o aviso no código ou no arquivo de projeto.
Para suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e reativar o aviso.
// Disable the warning.
#pragma warning disable SYSLIB0064
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0064
Para suprimir todos os avisos de SYSLIB0064 em seu projeto, adicione uma propriedade <NoWarn> ao seu arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0064</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, consulte Suprimir avisos.