Freigeben über


SYSLIB0053: AesGcm muss die erforderliche Taggröße angeben

Die AesGcm-Konstruktoren, die keine Taggröße akzeptieren, sind ab .NET 8 veraltet:

Wenn Sie diese im Code aufrufen, wird zur Kompilierzeit die Warnung SYSLIB0053 ausgelöst.

Grund für das Auslaufen

AES-GCM unterstützt je nach Plattform Tags verschiedener Länge, von 12 bis 16 Byte. Bisher hat die AesGcm-Klasse die gewünschte Taggröße basierend auf der Größe des Tags selbst bestimmt. Wenn beispielsweise Decrypt mit einem 14-Byte-Tag aufgerufen wurde, wurde angenommen, dass das Tag 14 Byte lang sein sollte.

Allerdings unterstützt AES-GCM diese verschiedenen Längen durch Abschneiden. AES-GCM erzeugt nativ 16-Byte-Tags, und kürzere Tags werden durch Abschneiden des Tags erzeugt.

Wenn Aufrufer von Decrypt() das Tag aus der Eingabe abrufen und es unverändert weitergeben, kann Decrypt() effektiv mit dem kürzest möglichen Tag verwendet werden, wodurch die effektive Größe des Tags reduziert wird.

Damit Consumer sicherstellen können, dass sie Tags der richtigen Größe verwenden, wurden neue Konstruktoren für AesGcm eingeführt, bei denen die Größe des erwarteten Tags im Voraus deklariert werden muss. Während der Ausführung von Encrypt() oder Decrypt() muss der angegebene Tagparameter mit der im Konstruktor deklarierten Größe übereinstimmen.

Problemumgehung

.NET 8 wurden neue Konstruktoren hinzugefügt, die eine Taggröße akzeptieren. Verwenden Sie stattdessen einen der folgenden Konstruktoren:

Unterdrücken einer Warnung

Wenn Sie die veralteten APIs verwenden müssen, können Sie die Warnung im Code oder in Ihrer Projektdatei unterdrücken.

Um nur einen einzelnen Verstoß zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Warnung zu deaktivieren und dann wieder zu aktivieren.

// Disable the warning.
#pragma warning disable SYSLIB0053

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

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

Um alle SYSLIB0053-Warnungen in Ihrem Projekt zu unterdrücken, fügen Sie ihrer Projektdatei eine <NoWarn>-Eigenschaft hinzu.

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

Weitere Informationen finden Sie unter Unterdrücken von Warnungen.