SYSLIB0007 : Implémentations par défaut des algorithmes de chiffrement non prises en charge

Le système de configuration du chiffrement dans .NET Framework ne permet pas une agilité du chiffrement appropriée et n’est pas présent dans .NET Core et .NET 5+. Les exigences de compatibilité descendante de .NET empêchent également le framework de mettre à jour certaines API de chiffrement pour suivre les progrès du chiffrement. Par conséquent, les API suivantes sont marquées comme obsolètes à compter de .NET 5. L’utilisation de ces API génère un avertissement SYSLIB0007 à la compilation et une exception PlatformNotSupportedException à l’exécution.

Solutions de contournement

  • Le plan d’action recommandé consiste à remplacer les appels aux API désormais obsolètes par des appels aux méthodes de fabrique pour des algorithmes spécifiques, par exemple Aes.Create(). Cela vous donne un contrôle total sur les algorithmes instanciés.

  • Si vous devez maintenir la compatibilité avec les charges utiles existantes générées par les applications .NET Framework qui utilisent les API désormais obsolètes, utilisez les remplacements suggérés dans le tableau suivant. Le tableau fournit un mappage entre les algorithmes par défaut de .NET Framework et leurs équivalents .NET 5+.

    .NET Framework Remplacement compatible .NET Core/.NET 5+ Remarques
    AsymmetricAlgorithm.Create() RSA.Create()
    HashAlgorithm.Create() SHA1.Create() L’algorithme SHA-1 est considéré comme rompu. Envisagez d’utiliser un algorithme plus fort si possible. Pour obtenir des conseils supplémentaires, contactez votre conseiller en sécurité.
    HMAC.Create() HMACSHA1() L’algorithme HMACSHA1 est déconseillé pour la plupart des applications modernes. Envisagez d’utiliser un algorithme plus fort si possible. Pour obtenir des conseils supplémentaires, contactez votre conseiller en sécurité.
    KeyedHashAlgorithm.Create() HMACSHA1() L’algorithme HMACSHA1 est déconseillé pour la plupart des applications modernes. Envisagez d’utiliser un algorithme plus fort si possible. Pour obtenir des conseils supplémentaires, contactez votre conseiller en sécurité.
    SymmetricAlgorithm.Create() Aes.Create()

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 SYSLIB0007

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

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

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

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

Pour plus d’informations, consultez Supprimer des avertissements.

Voir aussi