Delen via


SYSLIB0053: AesGcm moet de vereiste taggrootte aangeven

De AesGcm constructors die geen taggrootte accepteren, zijn verouderd, te beginnen in .NET 8:

Als u deze in code aanroept, wordt er een waarschuwing SYSLIB0053 gegenereerd tijdens het compileren.

Reden voor verdoezeling

AES-GCM ondersteunt tags van verschillende lengten, van 12 tot 16 bytes, afhankelijk van het platform. Voorheen zou de AesGcm klasse de gewenste taggrootte bepalen op basis van de grootte van de tag zelf. Als de tag bijvoorbeeld Decrypt werd aangeroepen met een tag van 14 bytes, werd ervan uitgegaan dat de tag 14 bytes zou zijn.

AES-GCM ondersteunt deze verschillende lengten echter door afkapping. AES-GCM produceert standaard 16 bytetags en kortere tags worden geproduceerd door de tag af te kapen.

Als bellers de Decrypt() tag ophalen uit invoer en de tag als zodanig doorgeven, kan Decrypt() deze effectief worden gebruikt met de kortst mogelijke tag, waardoor de effectieve grootte van de tag wordt verkleind.

Om consumenten te helpen ervoor te zorgen dat ze tags van de juiste grootte gebruiken, zijn er nieuwe constructors AesGcm geïntroduceerd waarvoor de grootte van de verwachte tag vooraf moet worden gedeclareerd. Tijdens Encrypt() of Decrypt()moet de opgegeven tagparameter overeenkomen met de grootte die in de constructor is gedeclareerd.

Tijdelijke oplossing

Er zijn nieuwe constructors toegevoegd die een taggrootte accepteren in .NET 8. Gebruik in plaats daarvan een van deze constructors:

Een waarschuwing onderdrukken

Als u de verouderde API's moet gebruiken, kunt u de waarschuwing in code of in het projectbestand onderdrukken.

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de waarschuwing uit te schakelen en vervolgens opnieuw in te schakelen.

// Disable the warning.
#pragma warning disable SYSLIB0053

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

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

Als u alle SYSLIB0053 waarschuwingen in uw project wilt onderdrukken, voegt u een <NoWarn> eigenschap toe aan het projectbestand.

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

Zie Waarschuwingen onderdrukken voor meer informatie.