Compartir vía


SYSLIB0007: implementaciones predeterminadas de algoritmos de criptografía no compatibles

El sistema de configuración de criptografía de .NET Framework no permite la agilidad criptográfica adecuada y no está presente en .NET Core ni .NET 5+. Los requisitos de compatibilidad con versiones anteriores de .NET también impiden que el marco actualice determinadas API criptográficas para mantenerse al día de los avances en la criptografía. Como resultado, las siguientes API se han marcado como obsoletas a partir de .NET 5. El uso de estas API genera una advertencia SYSLIB0007 en tiempo de compilación y una excepción PlatformNotSupportedException en tiempo de ejecución.

Soluciones alternativas

  • La acción recomendada consiste en reemplazar las llamadas a las API que ahora son obsoletas por llamadas a métodos de generador para algoritmos específicos, como por ejemplo Aes.Create(). Esto le proporciona control total sobre los algoritmos de los que se crean instancias.

  • Si tiene que mantener la compatibilidad con cargas existentes generadas por aplicaciones de .NET Framework en las que se usan las API obsoletas, use los reemplazos sugeridos en la tabla siguiente. En la tabla se proporciona una asignación de los algoritmos predeterminados de .NET Framework a sus equivalentes de .NET 5+.

    .NET Framework Reemplazo compatible con .NET Core o .NET 5 y versiones posteriores Comentarios
    AsymmetricAlgorithm.Create() RSA.Create()
    HashAlgorithm.Create() SHA1.Create() El algoritmo SHA-1 se considera interrumpido. Considere la posibilidad de usar un algoritmo más seguro si es posible. Consulte con el asesor de seguridad para obtener más información.
    HMAC.Create() HMACSHA1() El algoritmo HMACSHA1 no se recomienda para la mayoría de las aplicaciones modernas. Considere la posibilidad de usar un algoritmo más seguro si es posible. Consulte con el asesor de seguridad para obtener más información.
    KeyedHashAlgorithm.Create() HMACSHA1() El algoritmo HMACSHA1 no se recomienda para la mayoría de las aplicaciones modernas. Considere la posibilidad de usar un algoritmo más seguro si es posible. Consulte con el asesor de seguridad para obtener más información.
    SymmetricAlgorithm.Create() Aes.Create()

Supresión de una advertencia

Si tiene que seguir usando las API obsoletas, puede suprimir la advertencia en el código o en el archivo de proyecto.

Para suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y luego volver a habilitar la advertencia.

// Disable the warning.
#pragma warning disable SYSLIB0007

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

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

Para suprimir todas las advertencias SYSLIB0007 del proyecto, agregue una propiedad <NoWarn> al archivo del proyecto.

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

Para obtener más información, vea Suprimir advertencias.

Vea también