Изменено значение FeedbackSize по умолчанию для экземпляров, создаваемых методом TripleDES.Create
Значение по умолчанию для свойства SymmetricAlgorithm.FeedbackSize экземпляра TripleDES, возвращаемого TripleDES.Create(), изменено с 64 на 8, чтобы упростить переход с .NET Framework. Это свойство, если оно не используется непосредственно в коде вызывающего объекта, применяется только в том случае, когда свойство Mode имеет значение CipherMode.CFB.
Поддержка режима CFB появилась в выпуске .NET 5.0 RC1, поэтому это изменение должно влиять только на приложения .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 было введено в .NET Core версии 2.0, это поведение сохранилось. Однако в .NET Framework TripleDES.Create() возвращает экземпляр TripleDESCryptoServiceProvider, поэтому значение по умолчанию, возвращаемое фабрикой алгоритмов, равно 8. Для .NET Core и .NET 5 или более поздней версии фабрика алгоритмов возвращает закрытую реализацию, которая ранее имела значение по умолчанию 64.
Изменение значения FeedbackSize для реализации класса TripleDES на 8 позволяет написанным для .NET Framework приложениям, в которых задавался режим шифрования CFB, но свойство FeedbackSize не указывалось явным образом, продолжать работать в .NET 5.
Представленные версии
5,0
Рекомендуемое действие
Приложения, которые шифруют или расшифровывают данные в версии RC1 или RC2 .NET 5, делают это с помощью алгоритма CFB64 при выполнении следующих условий:
- экземпляр TripleDES получен от метода TripleDES.Create();
- для FeedbackSize используется значение по умолчанию;
- свойству Mode присвоено значение CipherMode.CFB.
Чтобы сохранить это поведение, присвойте свойству FeedbackSize значение 64
.
Не все реализации TripleDES
используют такое же значение по умолчанию для FeedbackSize. При использовании режима шифрования CFB в экземплярах TripleDES мы рекомендуем всегда явно задавать значение свойства FeedbackSize.
TripleDES cipher = TripleDES.Create();
cipher.Mode = CipherMode.CFB;
// Explicitly set the FeedbackSize for CFB to control between CFB8 and CFB64.
cipher.FeedbackSize = 8;