SYSLIB0060: alguns construtores Rfc2898DeriveBytes estão obsoletos
A partir do .NET 10, todos os construtores em System.Security.Cryptography.Rfc2898DeriveBytes são obsoletos. Chamar esses construtores no código gera o aviso SYSLIB0060
em tempo de compilação.
Motivo da obsoletidade
A implementação baseada em instância do PBKDF2, que System.Security.Cryptography.Rfc2898DeriveBytes fornece, oferece um uso fora do padrão ao transmitir (via streaming) bytes de volta, permitindo chamadas sucessivas para GetBytes
. Esse não é o uso pretendido de PBKDF2; o algoritmo deve ser usado de uma vez só. 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 as instâncias de System.Security.Cryptography.Rfc2898DeriveBytes e as chamadas para GetBytes
para usar o método estático único Rfc2898DeriveBytes.Pbkdf2.
Por exemplo, altere:
using System.Security.Cryptography;
Rfc2898DeriveBytes kdf = new Rfc2898DeriveBytes(password, salt, iterations, hashAlgorithm);
byte[] derivedKey = kdf.GetBytes(64);
até
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 desabilitar e, em seguida, habilitar novamente 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 arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0060</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, consulte Suprimir avisos.