Standardvärde för FeedbackSize för instanser som skapats av TripleDES.Create har ändrats
Standardvärdet för SymmetricAlgorithm.FeedbackSize egenskapen på den instans som TripleDES returneras från TripleDES.Create() har ändrats från 64 till 8 för att underlätta 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 ändringen
I .NET Framework är basklassen TripleDES 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 FeedbackSize för .NET Framework som angett chifferläget som CFB men inte uttryckligen FeedbackSize tilldelar egenskapen fortsätta att fungera på .NET 5.
Version introducerad
5,0
Rekommenderad åtgärd
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:
- Med en TripleDES instans från TripleDES.Create().
- Använd standardvärdet för FeedbackSize.
- Med egenskapen inställd på Mode CipherMode.CFB.
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 du alltid uttryckligen CFB tilldelar FeedbackSize egenskapsvärdet om du använder chifferläget på TripleDES instanser.
TripleDES cipher = TripleDES.Create();
cipher.Mode = CipherMode.CFB;
// Explicitly set the FeedbackSize for CFB to control between CFB8 and CFB64.
cipher.FeedbackSize = 8;