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.