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

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

向 .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。 将 FeedbackSize 属性引入到版本 2.0 的 .NET Core 时,将保留此相同行为。 但是,在 .NET Framework 中,TripleDES.Create() 返回 TripleDESCryptoServiceProvider 的实例,因此算法中心中的默认值为 8。 对于 .NET Core 和 .NET 5 +,算法中心返回非公共实现,在此之前,其默认值为 64。

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

引入的版本

5.0

当满足以下条件时,对 RC1 或 RC2 版本的 .NET 5 中的数据进行加密或解密的应用程序使用 CFB64 执行此操作:

若要保持此行为,请将 FeedbackSize 属性分配为 64

并非所有 TripleDES 实现对 FeedbackSize 都使用相同的默认值。 如果对 TripleDES 实例使用 CFB 密码模式,则建议你始终显式分配 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