2011-01-13 6 views
3

このトピックについてはいくつか読んだことがありますが、私が見ている回答ではまだ100%快適ではありません。新しいRijndaelManaged()の代わりにRijndael.Create()を使用するのは安全ですか?

あなたがRijndael.Create()を使用して暗号アルゴリズムを作成するときに、あなたがタイプRijndaelManagedのオブジェクトを取得 - これと(あなたが人々をVBまたはNew RijndaelManaged()new RijndaelManaged()を呼び出すの違いがあるようには思えません。 :)

私が読んだところでは、Rijndael.Create()メソッドが存在するため、将来のバージョンで変更される場合は、特定の実装について心配する必要はありません。しかし、私の質問です:それが起こると仮定し、.NET 5.0は別の実装を返します。 RijndaelManagedを使用して暗号化されたアイテムは、SomeFutureRijndaelManagedを使用して問題なく解読できるという保証はありますか?

互換性がないとは思いませんが、そのことを確認したいだけです。

おかげ

+0

VBノートについて:VBは大文字と小文字を区別しないので、VBではC#コンストラクタの呼び出しがそのまま動作します。すべてを大文字にすることを主張するIDEだけです。 –

+1

ええ、私は知っている...ちょうど悪い冗談。 –

答えて

7

Rijndael.Createおそらくそれは、アルゴリズムのシステム特定のバージョンを提供できるように抽象化し、追加のリダイレクトのレイヤを追加します。実際には非常に遅く、最終的にRijndaelManagedクラスに到達するためにOID文字列マッピングを解決するためにCrypto APIを使用する必要があります。プラットフォーム間で安定性を提供する代わりに、代わりにWindows 2000/XP/Vista/Windowsで問題を引き起こすことがわかっています。さらに、RijndaelManagedクラスを直接インスタンス化するよりも、Createメソッドを使用してオブジェクトのインスタンスを作成する方が、数百倍も遅くなります。メモリ内のデータを暗号化/復号化する際、これが大きなボトルネックであることがわかりました。

「将来のプルーフィング」に関する限り、セキュリティアルゴリズムにはそのようなものはありません。 .NET 5.0がリリースされたとき。アルゴリズムを作成する方法に関係なく、変更内容に合わせて更新する必要があります。アプリケーションの.configファイルに<supportedRuntime />を使用すると、.NETバージョンをロックすることができます。これにより、テストして更新したアプリケーションのみを切り替えることができます。

+0

ありがとうございます。私はRijndaelManagedを直接使うつもりだと思うので、そのsupportedRuntimeの設定を調べます。 –

関連する問題