TripleDES.Create 所建立執行個體的預設 FeedbackSize 值已變更
TripleDES 執行個體上從 TripleDES.Create() 傳回的 SymmetricAlgorithm.FeedbackSize 屬性預設值已從 64 變更為 8,以便讓 .NET Framework 的移轉作業變得更簡單。 除非直接在呼叫端程式碼中使用這個屬性,否則這個屬性只會在 Mode 屬性為 CipherMode.CFB 時使用。
CFB 模式的支援最先是新增至 5.0 RC1 版本的 .NET,因此會受到此變更影響的應該只有 .NET 5 RC1 和 .NET 5 RC2 應用程式。
變更描述
在 .NET Core 和 .NET 5 發行前版本中,TripleDES.Create().FeedbackSize
的預設值為 64。 從 RTM 版的 .NET 5 開始,TripleDES.Create().FeedbackSize
的預設值為 8。
變更原因
在 .NET Framework 中,TripleDES 基底類別會將 FeedbackSize 的值預設為 64,但 TripleDESCryptoServiceProvider 類別會將預設值覆寫為 8。 FeedbackSize 屬性在 2.0 版的 .NET Core 中引進時,保留了這個相同的行為。 不過,在 .NET Framework 中,TripleDES.Create() 會傳回 TripleDESCryptoServiceProvider 的執行個體,因此演算法處理站的預設值為 8。 針對 .NET Core 和 .NET 5+,演算法處理站會傳回非公用實作,到目前為止,其預設值都為 64。
將 TripleDES 實作類別的 FeedbackSize 值變更為 8,可讓針對 .NET Framework 撰寫、且將 Cipher 模式指定為 CFB 卻未明確指派 FeedbackSize 屬性的應用程式,在 .NET 5 上繼續運作。
導入的版本
5.0
建議的動作
符合下列條件時,在 RC1 或 RC2 版 .NET 5 中加密或解密資料的應用程式會使用 CFB64 來執行此動作:
- 具有來自 TripleDES.Create() 的 TripleDES 執行個體。
- 使用 FeedbackSize 的預設值。
- 將 Mode 屬性設定為 CipherMode.CFB。
若要維持此行為,請將 FeedbackSize 屬性指派給 64
。
並非所有 TripleDES
實作都會針對 FeedbackSize 使用相同的預設值。 我們的建議是,如果您在 TripleDES 執行個體上使用 CFB Cipher 模式,請一律明確指派 FeedbackSize 屬性值。
TripleDES cipher = TripleDES.Create();
cipher.Mode = CipherMode.CFB;
// Explicitly set the FeedbackSize for CFB to control between CFB8 and CFB64.
cipher.FeedbackSize = 8;