SYSLIB0007: Implementações padrão de algoritmos de criptografia não suportadas
O sistema de configuração criptográfica no .NET Framework não permite a agilidade criptográfica adequada e não está presente no .NET Core e no .NET 5+. . Os requisitos de compatibilidade com versões anteriores da NET também proíbem a estrutura de atualizar certas APIs criptográficas para acompanhar os avanços na criptografia. Como resultado, as APIs a seguir são marcadas como obsoletas, começando no .NET 5. O uso dessas APIs gera um aviso SYSLIB0007
em tempo de compilação e em tempo de PlatformNotSupportedException execução.
- System.Security.Cryptography.AsymmetricAlgorithm.Create()
- System.Security.Cryptography.HashAlgorithm.Create()
- System.Security.Cryptography.HMAC.Create()
- System.Security.Cryptography.KeyedHashAlgorithm.Create()
- System.Security.Cryptography.SymmetricAlgorithm.Create()
Soluções
O curso de ação recomendado é substituir chamadas para as APIs agora obsoletas por chamadas para métodos de fábrica para algoritmos específicos, por exemplo, Aes.Create(). Isso lhe dá controle total sobre quais algoritmos são instanciados.
Se você precisar manter a compatibilidade com cargas úteis existentes geradas por aplicativos do .NET Framework que usam as APIs agora obsoletas, use as substituições sugeridas na tabela a seguir. A tabela fornece um mapeamento de algoritmos padrão do .NET Framework para seus equivalentes do .NET 5+.
.NET Framework Substituição compatível com .NET Core / .NET 5+ Observações AsymmetricAlgorithm.Create() RSA.Create() HashAlgorithm.Create() SHA1.Create() O algoritmo SHA-1 é considerado quebrado. Considere o uso de um algoritmo mais forte, se possível. Consulte o seu consultor de segurança para obter mais orientações. HMAC.Create() HMACSHA1() O algoritmo HMACSHA1 é desencorajado para a maioria das aplicações modernas. Considere o uso de um algoritmo mais forte, se possível. Consulte o seu consultor de segurança para obter mais orientações. KeyedHashAlgorithm.Create() HMACSHA1() O algoritmo HMACSHA1 é desencorajado para a maioria das aplicações modernas. Considere o uso de um algoritmo mais forte, se possível. Consulte o seu consultor de segurança para obter mais orientações. SymmetricAlgorithm.Create() Aes.Create()
Suprimir um aviso
Se você precisar usar as APIs obsoletas, poderá suprimir o aviso no código ou no arquivo de projeto.
Para suprimir apenas uma única violação, adicione diretivas de pré-processador ao arquivo de origem para desativar e reativar o aviso.
// Disable the warning.
#pragma warning disable SYSLIB0007
// Code that uses obsolete API.
// ...
// Re-enable the warning.
#pragma warning restore SYSLIB0007
Para suprimir todos os SYSLIB0007
avisos em seu projeto, adicione uma <NoWarn>
propriedade ao seu arquivo de projeto.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
...
<NoWarn>$(NoWarn);SYSLIB0007</NoWarn>
</PropertyGroup>
</Project>
Para obter mais informações, consulte Suprimir avisos.