Dela via


SYSLIB0053: AesGcm bör ange den nödvändiga taggstorleken

Konstruktorerna AesGcm som inte accepterar en taggstorlek är föråldrade, med början i .NET 8:

Att anropa dem i kod genererar en varning SYSLIB0053 vid kompileringstillfället.

Orsak till obsoletion

AES-GCM har stöd för taggar med olika längd, från 12 till 16 byte, beroende på plattform. AesGcm Tidigare skulle klassen bestämma önskad taggstorlek baserat på storleken på själva taggen. Om Decrypt det till exempel anropades med en tagg på 14 byte antogs taggen vara 14 byte.

AES-GCM stöder dock dessa olika längder genom trunkering. AES-GCM producerar internt 16 byte-taggar och kortare taggar skapas genom att taggen trunkeras.

Om anropare av Decrypt() hämtar taggen från indata och skickar taggen som den är, kan Decrypt() den effektivt användas med den kortaste möjliga taggen, vilket minskar den effektiva storleken på taggen.

För att hjälpa konsumenterna att se till att de använder taggar av rätt storlek introducerades nya konstruktorer för AesGcm som kräver att storleken på den förväntade taggen deklareras i förväg. Under Encrypt() eller Decrypt()måste den angivna taggparametern matcha den storlek som deklareras i konstruktorn.

Lösning

Nya konstruktorer som accepterar en taggstorlek har lagts till i .NET 8. Använd någon av dessa konstruktorer i stället:

Ignorera en varning

Om du måste använda föråldrade API:er kan du ignorera varningen i koden eller i projektfilen.

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och återaktiverar sedan varningen.

// Disable the warning.
#pragma warning disable SYSLIB0053

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

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

Om du vill ignorera alla SYSLIB0053 varningar i projektet lägger du till en <NoWarn> egenskap i projektfilen.

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

Mer information finns i Utelämna varningar.