SYSLIB0041 : Certains constructeurs Rfc2898DeriveBytes sont obsolètes
Les constructeurs Rfc2898DeriveBytes suivants sont obsolètes à partir de .NET 7. Leur utilisation dans le code génère un avertissement SYSLIB0041
au moment de la compilation.
- Rfc2898DeriveBytes(String, Byte[])
- Rfc2898DeriveBytes(String, Int32)
- Rfc2898DeriveBytes(Byte[], Byte[], Int32)
- Rfc2898DeriveBytes(String, Byte[], Int32)
- Rfc2898DeriveBytes(String, Int32, Int32)
Ces surcharges sont par défaut l’algorithme de hachage ou le nombre d’itérations, et les valeurs par défaut ne sont plus considérées comme sécurisées. Cela concerne tous les constructeurs disponibles dans .NET 4.7.1 et les versions antérieures. À l’avenir, vous ne devez utiliser que les constructeurs les plus récents.
Solution de contournement
Utilisez une surcharge de constructeur différente où vous pouvez spécifier explicitement le nombre d’itérations (la valeur par défaut est de 1000) et le nom de l’algorithme de hachage (la valeur par défaut est de HashAlgorithmName.SHA1).
Si vous utilisez le nombre d’itérations par défaut ou l’algorithme de hachage par défaut, envisagez de passer à des valeurs plus sécurisées, c’est-à-dire à un plus grand nombre d’itérations, ou à un algorithme de hachage plus récent.
Supprimer un avertissement
Si vous devez utiliser les API obsolètes, vous pouvez supprimer l’avertissement dans le code ou dans votre fichier projet.
Pour supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver, puis réactiver l’avertissement.
// Disable the warning.
#pragma warning disable SYSLIB0041
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0041
Pour supprimer tous les avertissements SYSLIB0041
dans votre projet, ajoutez une propriété <NoWarn>
à votre fichier projet.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0041</NoWarn>
</PropertyGroup>
</Project>
Pour plus d’informations, consultez Supprimer des avertissements.