SYSLIB0045 : Certaines méthodes de fabrique de chiffrement sont obsolètes
Les méthodes System.Security.Cryptography
suivantes sont obsolètes à partir de .NET 7. Leur utilisation dans le code génère un avertissement SYSLIB0045
au moment de la compilation. Chacune de ces méthodes de fabrique accepte un argument de chaîne qui représente le nom de l’algorithme. Ces méthodes appellent CryptoConfig.CreateFromName et convertissent le résultat en type de retour.
- Aes.Create(String)
- AsymmetricAlgorithm.Create(String)
- DES.Create(String)
- ECDiffieHellman.Create(String)
- ECDsa.Create(String)
- HashAlgorithm.Create(String)
- KeyedHashAlgorithm.Create(String)
- RandomNumberGenerator.Create(String)
- RC2.Create(String)
- Rijndael.Create(String)
- RSA.Create(String)
- SHA1.Create(String)
- SHA256.Create(String)
- SHA384.Create(String)
- SHA512.Create(String)
- SymmetricAlgorithm.Create(String)
- TripleDES.Create(String)
Ces méthodes ont été marquées [Obsolete]
, car dans les applications découpées, elles peuvent retourner null
alors qu’elles ne le feraient pas dans les applications non découpées. En outre, dans les applications non découpées, les comportements basés sur les exceptions de ces méthodes surprend parfois les appelants, et de nombreux identificateurs connus sont associés à des types qui sont eux-mêmes marqués [Obsolete]
.
Solution de contournement
Les appels qui passent une chaîne constante doivent être remplacés par la méthode de fabrique sans paramètre ou par un appel fort pour créer le type approprié. Par exemple, un appel à Aes.Create("AES")
peut être remplacé par Aes.Create()
ou new AesCryptoServiceProvider()
. Étant donné que le type AesCryptoServiceProvider est également marqué [Obsolete]
, Aes.Create()
est le remplacement préféré.
Les appels qui passent une chaîne non constante peuvent utiliser leur propre table de recherche ou être modifiés pour appeler CryptoConfig.CreateFromName directement.
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 SYSLIB0045
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0045
Pour supprimer tous les avertissements SYSLIB0045
dans votre projet, ajoutez une propriété <NoWarn>
à votre fichier projet.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0045</NoWarn>
</PropertyGroup>
</Project>
Pour plus d’informations, consultez Supprimer des avertissements.