SYSLIB0053:AesGcm 應指出所需的標籤大小

從 .NET 8 開始,不接受標籤大小的 AesGcm 建構函式已淘汰:

在程式碼中呼叫這些方法會導致在編譯時間產生警告 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>

如需詳細資訊,請參閱隱藏警告