SYSLIB0041: Alguns construtores Rfc2898DeriveBytes são obsoletos
Os seguintes Rfc2898DeriveBytes construtores são obsoletos, começando no .NET 7. Usá-los no código gera 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. Estes são todos os construtores que estavam disponíveis no .NET 4.7.1 e versões anteriores. No futuro, você deve usar apenas os construtores mais novos.
Solução
Use uma sobrecarga de construtor diferente onde você pode especificar explicitamente a contagem de iteração (o padrão é 1000) e o nome do algoritmo de hash (o padrão é HashAlgorithmName.SHA1).
Se você estiver usando a contagem de iteração padrão ou o algoritmo de hash padrão, considere mover para valores mais seguros, ou seja, uma contagem de iteração maior ou um algoritmo de hash mais recente.
Suprimir um aviso
Se você precisar usar as APIs obsoletas, 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 SYSLIB0041
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0041
Para suprimir todos os SYSLIB0041
avisos em seu projeto, adicione uma <NoWarn>
propriedade ao seu arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0041</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, consulte Suprimir avisos.