Partage via


SYSLIB0060 : les constructeurs Rfc2898DeriveBytes sont obsolètes

À partir de .NET 10, tous les constructeurs de System.Security.Cryptography.Rfc2898DeriveBytes sont obsolètes. L’appel de ces constructeurs dans le code génère l’avertissement SYSLIB0060 au moment de la compilation.

Raison de l’obsoletion

La mise en œuvre de PBKDF2 basée sur les instances, fournie par System.Security.Cryptography.Rfc2898DeriveBytes, offre une utilisation non standard en « streamant » les octets en retour en autorisant des appels successifs à GetBytes. Il ne s'agit pas de l'utilisation prévue de PBKDF2 ; l'algorithme doit être utilisé en une seule fois. La fonctionnalité one-shot existe en tant que méthode statique Rfc2898DeriveBytes.Pbkdf2 et doit être utilisée au lieu d’instancier System.Security.Cryptography.Rfc2898DeriveBytes.

Solution de contournement

Modifiez les instances de System.Security.Cryptography.Rfc2898DeriveBytes et les appels à GetBytes pour utiliser la méthode statique à usage unique Rfc2898DeriveBytes.Pbkdf2 à la place.

Par exemple, modifiez :

using System.Security.Cryptography;

Rfc2898DeriveBytes kdf = new Rfc2898DeriveBytes(password, salt, iterations, hashAlgorithm);
byte[] derivedKey = kdf.GetBytes(64);

à

byte[] derivedKey = Rfc2898DeriveBytes.Pbkdf2(password, salt, iterations, hashAlgorithm, 64);

Supprimer un avertissement

Si vous devez utiliser l’API obsolète, 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éactivez l’avertissement.

// Disable the warning.
#pragma warning disable SYSLIB0060

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore SYSLIB0060

Pour supprimer tous les avertissements SYSLIB0060 dans votre projet, ajoutez une propriété <NoWarn> à votre fichier projet.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);SYSLIB0060</NoWarn>
  </PropertyGroup>
</Project>

Pour plus d’informations, consultez Supprimer des avertissements.