Поделиться через


Изменено значение 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 при выполнении следующих условий:

Чтобы сохранить это поведение, присвойте свойству 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;

Затронутые API