Udostępnij za pośrednictwem


SYSLIB0053: Narzędzie AesGcm powinno wskazywać wymagany rozmiar tagu

Konstruktory AesGcm , które nie akceptują rozmiaru tagu, są przestarzałe, począwszy od platformy .NET 8:

Wywołanie ich w kodzie generuje ostrzeżenie SYSLIB0053 w czasie kompilacji.

Przyczyna obsoletionu

Usługa AES-GCM obsługuje tagi o różnych długościach, od 12 do 16 bajtów, w zależności od platformy. AesGcm Wcześniej klasa określałaby żądany rozmiar tagu na podstawie rozmiaru samego tagu. Jeśli na przykład Decrypt wywołano tag 14 bajtów, zakładano, że tag miał mieć 14 bajtów.

Jednak usługa AES-GCM obsługuje te różne długości przez obcięcie. Usługa AES-GCM natywnie generuje 16 tagów bajtów, a krótsze tagi są generowane przez obcięcie tagu.

Jeśli osoby wywołujące Decrypt() tag pobierają tag z danych wejściowych i przekazują tag zgodnie z rzeczywistym użyciem, skutecznie umożliwia Decrypt() użycie go z najkrótszym możliwym tagiem, co zmniejsza skuteczny rozmiar tagu.

Aby pomóc konsumentom w zapewnieniu, że używają tagów odpowiedniego rozmiaru, wprowadzono nowe konstruktory AesGcm , które wymagają deklarowania rozmiaru oczekiwanego tagu z góry. Podczas Encrypt() lub Decrypt()podany parametr tagu musi być zgodny z rozmiarem zadeklarowany w konstruktorze.

Rozwiązanie

Nowe konstruktory, które akceptują rozmiar tagu, zostały dodane na platformie .NET 8. Zamiast tego użyj jednego z tych konstruktorów:

Pomijanie ostrzeżenia

Jeśli musisz używać przestarzałych interfejsów API, możesz pominąć ostrzeżenie w kodzie lub w pliku projektu.

Aby pominąć tylko jedno naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć ostrzeżenie.

// Disable the warning.
#pragma warning disable SYSLIB0053

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

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

Aby pominąć wszystkie SYSLIB0053 ostrzeżenia w projekcie, dodaj <NoWarn> właściwość do pliku projektu.

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

Aby uzyskać więcej informacji, zobacz Pomijanie ostrzeżeń.