TripleDES.Create 创建的实例的默认 FeedbackSize 值已更改

SymmetricAlgorithm.FeedbackSize返回的TripleDES实例上的TripleDES.Create()属性的默认值已从64改为8,以便更轻松地从.NET Framework进行迁移。 除非直接在调用方代码中使用此属性,否则仅在Mode属性为Mode时才使用属性。

向 .NET 5.0 RC1 版本中首次添加了对 CFB 模式的支持,因此只有 .NET 5 RC1 和 .NET 5 RC2 应用程序会受到此更改的影响。

更改描述

在 .NET Core 和早期版本的 .NET 5 中, TripleDES.Create().FeedbackSize 默认值为 64。 从 .NET 5 的 RTM 版本开始, TripleDES.Create().FeedbackSize 默认值为 8。

更改原因

在 .NET Framework 中,TripleDES 类将 FeedbackSize 的默认值设置为 64,但是 TripleDESCryptoServiceProvider 类将该默认值覆盖为 8。 .NET Core 在版本 2.0 中引入该属性时,保留了相同的行为。 但是,在 .NET Framework 中, TripleDES.Create() 返回一个实例 TripleDESCryptoServiceProvider,因此算法工厂中的默认值为 8。 对于 .NET Core 和 .NET 5+,算法工厂返回一个非公共实现,直到现在,该实现的默认值为 64。

将实现类TripleDESFeedbackSize值更改为8,允许为指定密码模式为CFB但未显式分配FeedbackSize属性的 .NET Framework 编写的应用程序继续在 .NET 5 上运行。

已引入的版本

5.0

满足以下条件时,在 .NET 5 的 RC1 或 RC2 版本中加密或解密数据的应用程序会使用 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