SYSLIB0053: AesGcm должен указывать требуемый размер тега

Конструкторы AesGcm , которые не принимают размер тега, устарели, начиная с .NET 8:

При вызове их в коде выдается предупреждение SYSLIB0053 во время компиляции.

Причина обсоления

AES-GCM поддерживает теги различных длин, от 12 до 16 байт, в зависимости от платформы. AesGcm Ранее класс определяет нужный размер тега на основе размера самого тега. Например, если Decrypt он был вызван с тегом 14 байтов, предполагается, что тег должен быть 14 байтами.

Однако AES-GCM поддерживает эти различные длины путем усечения. AES-GCM изначально создает 16 байтовых тегов, а более короткие теги создаются путем усечения тега.

Если вызывающие Decrypt() элементы получают тег из входных данных и передают тег как есть, он эффективно позволяет Decrypt() использовать с самым коротким возможным тегом, что снижает действующий размер тега.

Чтобы помочь потребителям убедиться, что они используют теги правильного размера, новые конструкторы для AesGcm были представлены, которые требуют объявления размера ожидаемого тега вперед. Во время Encrypt() или Decrypt()указанный параметр тега должен соответствовать размеру, объявленному в конструкторе.

Обходное решение

В .NET 8 добавлены новые конструкторы, принимаюющие размер тега. Вместо этого используйте один из следующих конструкторов:

Отключение предупреждений

Если необходимо использовать устаревшие API, вы можете отключить предупреждение в коде или в файле проекта.

Чтобы отключить только одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить предупреждение.

// Disable the warning.
#pragma warning disable SYSLIB0053

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

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

Чтобы отключить все SYSLIB0053 предупреждения в проекте, добавьте <NoWarn> свойство в файл проекта.

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

Дополнительные сведения см. в разделе Отключение предупреждений.