SYSLIB0060: Los constructores Rfc2898DeriveBytes están obsoletos
A partir de .NET 10, todos los constructores de System.Security.Cryptography.Rfc2898DeriveBytes están obsoletos. Llamar a estos constructores en código genera una advertencia SYSLIB0060
en tiempo de compilación.
Motivo de obsolescencia
La implementación basada en instancias de PBKDF2, que proporciona System.Security.Cryptography.Rfc2898DeriveBytes, ofrece un uso no estándar al permitir la transmisión de bytes y realizar llamadas consecutivas a GetBytes
. Esto no es el uso previsto de PBKDF2; el algoritmo debe usarse como una sola ejecución. La funcionalidad de una sola ejecución existe como el método estático Rfc2898DeriveBytes.Pbkdf2 y debe usarse en lugar de crear instancias de System.Security.Cryptography.Rfc2898DeriveBytes.
Solución alternativa
Cambie las instancias de System.Security.Cryptography.Rfc2898DeriveBytes y las llamadas a GetBytes
para usar, en su lugar, el método estático de una sola ejecución Rfc2898DeriveBytes.Pbkdf2.
Por ejemplo, cambie:
using System.Security.Cryptography;
Rfc2898DeriveBytes kdf = new Rfc2898DeriveBytes(password, salt, iterations, hashAlgorithm);
byte[] derivedKey = kdf.GetBytes(64);
to
byte[] derivedKey = Rfc2898DeriveBytes.Pbkdf2(password, salt, iterations, hashAlgorithm, 64);
Suprimir una advertencia
Si debe usar la API obsoleta, puede suprimir la advertencia en el código o en el archivo del proyecto.
Para suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la advertencia.
// Disable the warning.
#pragma warning disable SYSLIB0060
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0060
Para suprimir todas las advertencias de SYSLIB0060
del proyecto, agregue una propiedad <NoWarn>
al archivo del proyecto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0060</NoWarn>
</PropertyGroup>
</Project>
Para obtener más información, vea Suprimir advertencias.