Partilhar via


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.

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.

Consulte também