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 を使用して操作が行われます。

この動作を維持するには、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