다음을 통해 공유


SYSLIB0053: AesGcm은 필수 태그 크기를 나타내야 합니다.

태그 크기를 허용하지 않는 AesGcm 생성자는 .NET 8부터 사용되지 않습니다.

코드에서 이러한 메서드를 호출하면 컴파일 시간에 SYSLIB0053 경고가 생성됩니다.

사용 중지 이유

AES-GCM은 플랫폼에 따라 12바이트에서 16바이트까지 다양한 길이의 태그를 지원합니다. 이전에는 AesGcm 클래스가 태그 자체의 크기에 따라 원하는 태그 크기를 결정했습니다. 예를 들어, 14바이트 태그를 사용하여 Decrypt가 호출된 경우 태그는 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>

자세한 내용은 경고 표시 안 함을 참조하세요.