Standardvärde för FeedbackSize för instanser som skapats av TripleDES.Create har ändrats

Standardvärdet för SymmetricAlgorithm.FeedbackSize egenskapen på instansen av TripleDES som returneras från TripleDES.Create() har ändrats från 64 till 8 för att förenkla migreringen från .NET Framework. Den här egenskapen, om den inte används direkt i anroparkoden, används endast när egenskapen Mode är CipherMode.CFB.

Stöd för CFB läget lades först till i .NET för 5.0 RC1-versionen, så endast .NET 5 RC1- och .NET 5 RC2-program bör påverkas av den här ändringen.

Ändra beskrivning

I .NET Core och tidigare förhandsversioner av .NET 5 TripleDES.Create().FeedbackSize har standardvärdet 64. Från och med RTM-versionen av .NET 5 TripleDES.Create().FeedbackSize har standardvärdet 8.

Orsak till ändring

I .NET Framework har TripleDES-basklassen standardvärdet FeedbackSize 64, men TripleDESCryptoServiceProvider-klassen skriver över standardvärdet till 8. När egenskapen FeedbackSize introducerades för .NET Core i version 2.0 bevarades samma beteende. I .NET Framework TripleDES.Create() returnerar dock en instans av TripleDESCryptoServiceProvider, så standardvärdet från algoritmfabriken är 8. För .NET Core och .NET 5+ returnerar algoritmfabriken en icke-offentlig implementering, som hittills har ett standardvärde på 64.

Om implementeringsklassens TripleDES värde ändras till 8 kan program som skrivits för .NET Framework, som angett chifferläget som FeedbackSize, men inte uttryckligen tilldelat egenskapen CFB, fortsätta att fungera på .NET 5.

Version lanserad

5,0

Program som krypterar eller dekrypterar data i RC1- eller RC2-versionerna av .NET 5 gör det med CFB64 när följande villkor uppfylls:

Om du vill behålla det här beteendet tilldelar du FeedbackSize egenskapen till 64.

TripleDES Alla implementeringar använder inte samma standard för FeedbackSize. Vi rekommenderar att om du använder chifferläget CFBTripleDES instanser, bör du alltid uttryckligen tilldela FeedbackSize egenskapsvärdet.

TripleDES cipher = TripleDES.Create();
cipher.Mode = CipherMode.CFB;
// Explicitly set the FeedbackSize for CFB to control between CFB8 and CFB64.
cipher.FeedbackSize = 8;

Berörda API:er