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>
如需詳細資訊,請參閱隱藏警告。