SYSLIB0041: alguns construtores Rfc2898DeriveBytes estão obsoletos
Os seguintes construtores Rfc2898DeriveBytes estão obsoletos, começando no .NET 7. Usar no código gerará o aviso SYSLIB0041
em tempo de compilação.
- Rfc2898DeriveBytes(String, Byte[])
- Rfc2898DeriveBytes(String, Int32)
- Rfc2898DeriveBytes(Byte[], Byte[], Int32)
- Rfc2898DeriveBytes(String, Byte[], Int32)
- Rfc2898DeriveBytes(String, Int32, Int32)
Essas sobrecargas padronizam o algoritmo de hash ou o número de iterações e os padrões não são mais considerados seguros. Esses são todos os construtores que estavam disponíveis no .NET 4.7.1 e versões anteriores. Daqui em diante utilize apenas os construtores mais recentes.
Solução alternativa
Use uma sobrecarga de construtor diferente em que é possível especificar explicitamente a contagem de iteração (o padrão é 1000) e o nome do algoritmo de hash (o padrão é HashAlgorithmName.SHA1).
Se estiver usando a contagem de iteração padrão ou o algoritmo de hash padrão, considere mudar para valores mais seguros, ou seja, uma contagem de iteração maior ou um algoritmo de hash mais recente.
Suprimir um aviso
Se for necessário usar as APIs obsoletas, você poderá suprimir o aviso no código ou no arquivo de projeto.
Para suprimir apenas uma violação única, adicione as diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite o aviso.
// Disable the warning.
#pragma warning disable SYSLIB0041
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0041
Para suprimir todos os avisos SYSLIB0041
no projeto, adicione uma propriedade <NoWarn>
ao arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0041</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, confira Suprimir avisos.