SYSLIB0060: os construtores Rfc2898DeriveBytes estão obsoletos
A partir do .NET 10, todos os construtores no System.Security.Cryptography.Rfc2898DeriveBytes estão obsoletos. Chamar estes construtores no código gera um aviso SYSLIB0060
durante a compilação.
Motivo da obsolescência
A implementação baseada em instância do PBKDF2, que System.Security.Cryptography.Rfc2898DeriveBytes fornece, oferece um uso não padrão, transmitindo bytes de volta ao permitir chamadas sucessivas para GetBytes
. Esta não é a utilização pretendida do PBKDF2; o algoritmo deve ser usado apenas uma vez. A funcionalidade one-shot existe como o método estático Rfc2898DeriveBytes.Pbkdf2 e deve ser usada em vez de instanciar System.Security.Cryptography.Rfc2898DeriveBytes.
Solução alternativa
Altere instâncias de System.Security.Cryptography.Rfc2898DeriveBytes e chamadas para GetBytes
para usar o método estático one-shot Rfc2898DeriveBytes.Pbkdf2.
Por exemplo, altere:
using System.Security.Cryptography;
Rfc2898DeriveBytes kdf = new Rfc2898DeriveBytes(password, salt, iterations, hashAlgorithm);
byte[] derivedKey = kdf.GetBytes(64);
Para
byte[] derivedKey = Rfc2898DeriveBytes.Pbkdf2(password, salt, iterations, hashAlgorithm, 64);
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 SYSLIB0060
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0060
Para suprimir todos os avisos de SYSLIB0060
em seu projeto, adicione uma propriedade <NoWarn>
ao seu arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0060</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, consulte Eliminar avisos.