Partilhar via


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.

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.