Compartilhar via


SYSLIB0007: Implementações padrão de algoritmos de criptografia sem suporte

O sistema de configuração de criptografia do .NET Framework não permite a agilidade de criptografia adequada e não está presente no .NET Core nem no .NET 5 e superior. Os requisitos de compatibilidade com versões anteriores do .NET também proíbem a estrutura de atualizar determinadas APIs criptográficas para acompanhar os avanços na criptografia. Como resultado, as seguintes APIs são marcadas como obsoletas, a partir do .NET 5. O uso dessas APIs gera os avisos SYSLIB0007 em tempo de compilação e PlatformNotSupportedException em tempo de execução.

Soluções Alternativas

  • O curso de ação recomendado é substituir as chamadas às APIs já obsoletas por chamadas para métodos de fábrica para algoritmos específicos, por exemplo, Aes.Create(). Isso fornece controle total sobre os algoritmos que são instanciados.

  • Caso precise manter a compatibilidade com o conteúdo existente gerado por aplicativos .NET Framework que usam as APIs já obsoletas, use as substituições sugeridas na tabela a seguir. A tabela fornece um mapeamento dos algoritmos padrão do .NET Framework para os equivalentes do .NET 5 e superior.

    .NET Framework Substituição compatível com o .NET Core/o .NET 5+ Comentários
    AsymmetricAlgorithm.Create() RSA.Create()
    HashAlgorithm.Create() SHA1.Create() O algoritmo SHA-1 é considerado desfeito. Considere o uso de um algoritmo mais forte, se possível. Consulte seu orientador de segurança para obter mais diretrizes.
    HMAC.Create() HMACSHA1() O algoritmo HMACSHA1 não é recomendado para a maioria dos aplicativos modernos. Considere o uso de um algoritmo mais forte, se possível. Consulte seu orientador de segurança para obter mais diretrizes.
    KeyedHashAlgorithm.Create() HMACSHA1() O algoritmo HMACSHA1 não é recomendado para a maioria dos aplicativos modernos. Considere o uso de um algoritmo mais forte, se possível. Consulte seu orientador de segurança para obter mais diretrizes.
    SymmetricAlgorithm.Create() Aes.Create()

Suprimir um aviso

Se for necessário usar as APIs obsoletas, você poderá suprimir o aviso no código ou no arquivo de projeto.

Para suprimir apenas uma violação única, adicione as diretivas de pré-processador ao arquivo de origem para desabilitar e, em seguida, reabilite 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 avisos SYSLIB0007 no projeto, adicione uma propriedade <NoWarn> ao arquivo de projeto.

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

Para obter mais informações, confira Suprimir avisos.

Confira também