Share via


SYSLIB0053: AesGcm debe indicar el tamaño de etiqueta necesario

Los constructores AesGcm que no aceptan un tamaño de etiqueta están obsoletos a partir de .NET 8:

Si se los llama en el código, se genera la advertencia SYSLIB0053 en tiempo de compilación.

Motivo de la obsolescencia

AES-GCM admite etiquetas de varias longitudes, de 12 a 16 bytes, según la plataforma. Anteriormente, la clase AesGcm determinaba el tamaño de etiqueta deseado en función del tamaño de la propia etiqueta. Por ejemplo, si se llamaba a Decrypt con una etiqueta de 14 bytes, se suponía que la etiqueta debía ser de 14 bytes.

Sin embargo, AES-GCM admite estas distintas longitudes por truncamiento. AES-GCM genera de forma nativa 16 etiquetas de bytes, mientras que las etiquetas más cortas se generan truncando la etiqueta.

Si los autores de la llamada a Decrypt() obtienen la etiqueta de la entrada y pasan la etiqueta tal cual, esto permite usar Decrypt() con la etiqueta más corta posible, lo que reduce el tamaño efectivo de la etiqueta.

Para que los consumidores puedan asegurarse de que usan etiquetas del tamaño correcto, se han introducido nuevos constructores para AesGcm que requieren que se declare el tamaño de la etiqueta esperada por adelantado. Durante Encrypt() o Decrypt(), el parámetro de etiqueta proporcionado debe coincidir con el tamaño declarado en el constructor.

Solución alternativa

Se han agregado nuevos constructores que aceptan un tamaño de etiqueta en .NET 8. Use uno de estos constructores en su lugar:

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 SYSLIB0053

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

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

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

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

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