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。
将实现类TripleDES的FeedbackSize值更改为8,允许为指定密码模式为CFB但未显式分配FeedbackSize属性的 .NET Framework 编写的应用程序继续在 .NET 5 上运行。
已引入的版本
5.0
建议的措施
满足以下条件时,在 .NET 5 的 RC1 或 RC2 版本中加密或解密数据的应用程序会使用 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;