TripleDES.Create で作成されるインスタンスの既定の FeedbackSize 値の変更
TripleDES.Create() から返される TripleDES インスタンスの SymmetricAlgorithm.FeedbackSize プロパティの既定値が 64 から 8 に変更され、.NET Framework からの移行がより簡単になりました。 このプロパティは、呼び出し元のコードで直接使用されていない限り、Mode プロパティが CipherMode.CFB場合にのみ使用されます。
CFB モードのサポートは最初に 5.0 RC1 リリース用の .NET に追加されたため、この変更の影響を受けるのは .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 に上書きされます。 バージョン 2.0 で FeedbackSize プロパティが .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 を使用して操作が行われます。
- TripleDES.Create() の TripleDES インスタンスを使用する。
- FeedbackSize に既定値を使用する。
- Mode プロパティが CipherMode.CFB に設定されている。
この動作を維持するには、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
.NET