トップ回答者
.netFrameworkのバージョンについて

質問
回答
-
ただし、例外的に以下のような事例もあるそうですので留意されたほうが良いでしょう。
http://labs.timedia.co.jp/2012/02/windows-xp-sp3-net-framework-40sha256.html脱線気味になりますが、誤解を与える記事なので補足します。
.NET FrameworkのSHA256には3つの実装が用意されています。
- SHA256CryptoServiceProviderはOSのCrypto Service Providerを使用しますので、OSの影響を受けます。記事の通りであれば動作しない環境もあるということでしょう。
- SHA256ManagedはC#での実装ですのでパフォーマンスに難がありますが全ての環境で動作します(たぶん)。
- SHA256CngはOSのCryptography API: Next Generationを使用します。これはVista以降で提供される機能なのでXP、2003では動作しません。
これらは共通の親クラスSHA256を持ちますので、インスタンス生成部分だけ分岐してやることで、コードを共通化できるよう設計されています。
付け加えると、各々のクラスのコンストラクターを直接呼び出す必要はなくSHA256.Create()メソッドにクラス名文字列を渡すことでそれぞれのクラスインスタンスを作成できます。つまり文字列を切り替える分岐だけで済みます。
更に付け加えると、暗号化クラスへのアルゴリズム名の割り当てによりapp.config構成ファイルによって切り替える機能も提供されています。つまりコード上の分岐を排除することもできます。ですので、「Windows XP SP3 + .Net Framework 4.0の組み合わせではSHA256が使えない」というタイトルはちょっと盛り過ぎに感じます。
# 上記機能を理解した上での記事とは思えませんでした…。いろいろ書きましたが、SHA256.Create()メソッド(引数無し)で作成されるデフォルトはSHA256Managedでした。デフォルトを使う限り無関係な話題ということでした…。
-
ほとんどの場合、基本的には動作するはずですが、既にそれらのOSにおける.NET Framework 4のサポートは終了していますので、動作しない可能性は0ではありません。
また、本番運用でも.NET Framework 4をお使いの予定でしょうか? .NET Frameworkにもサポート終了日がありますので、もしご存知なければ注意して下さい。ちなみに.NET Framework 4の場合、来年の1月で全てのOSにおけるサポートが終了します。(参考)
各Windows OSでの.NET Frameworkのサポート終了時期を知る
http://www.atmarkit.co.jp/ait/articles/1503/04/news141.html★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
-
以下によれば.NET Framework 4.0での動作は想定されていると考えられます。
https://msdn.microsoft.com/ja-jp/library/8z6watww(v=vs.100).aspxただし、例外的に以下のような事例もあるそうですので留意されたほうが良いでしょう。
http://labs.timedia.co.jp/2012/02/windows-xp-sp3-net-framework-40sha256.html
どちらかというと、
本番運用では、WindowsServer2012R2、Windows7/10、最新の.NET Frameworkを使用します。
前述したサポート切れOSの件よりもこちらのほうが気になりますが。
.NET4.0で動作したものが.NET4.5.2以上で動作しなくなるケースのほうが多いと思います。
以下などで互換性の確認もされたほうが良いかもしれません。https://msdn.microsoft.com/ja-jp/library/ff602939%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
すべての返信
-
ほとんどの場合、基本的には動作するはずですが、既にそれらのOSにおける.NET Framework 4のサポートは終了していますので、動作しない可能性は0ではありません。
また、本番運用でも.NET Framework 4をお使いの予定でしょうか? .NET Frameworkにもサポート終了日がありますので、もしご存知なければ注意して下さい。ちなみに.NET Framework 4の場合、来年の1月で全てのOSにおけるサポートが終了します。(参考)
各Windows OSでの.NET Frameworkのサポート終了時期を知る
http://www.atmarkit.co.jp/ait/articles/1503/04/news141.html★良い回答には回答済みマークを付けよう! MVP - .NET http://d.hatena.ne.jp/trapemiya/
-
Tak1wa様、trapemiya様
返信有難うございます。>VB2015で作成したアプリケーションのターゲットフレームワークはいくつなのでしょう。
ターゲットフレームワークは.NET Framework 4です。
本番運用では、WindowsServer2012R2、Windows7/10、最新の.NET Frameworkを使用します。
今回期間限定かつインターネットに接続しない環境で.NET Framework 4(WindowsServer2003R2Standard Sp2または、WindowsXpProSp3)上でVB2015アプリケーションを動作させる事を考えています。
-
以下によれば.NET Framework 4.0での動作は想定されていると考えられます。
https://msdn.microsoft.com/ja-jp/library/8z6watww(v=vs.100).aspxただし、例外的に以下のような事例もあるそうですので留意されたほうが良いでしょう。
http://labs.timedia.co.jp/2012/02/windows-xp-sp3-net-framework-40sha256.html
どちらかというと、
本番運用では、WindowsServer2012R2、Windows7/10、最新の.NET Frameworkを使用します。
前述したサポート切れOSの件よりもこちらのほうが気になりますが。
.NET4.0で動作したものが.NET4.5.2以上で動作しなくなるケースのほうが多いと思います。
以下などで互換性の確認もされたほうが良いかもしれません。https://msdn.microsoft.com/ja-jp/library/ff602939%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396
-
ただし、例外的に以下のような事例もあるそうですので留意されたほうが良いでしょう。
http://labs.timedia.co.jp/2012/02/windows-xp-sp3-net-framework-40sha256.html脱線気味になりますが、誤解を与える記事なので補足します。
.NET FrameworkのSHA256には3つの実装が用意されています。
- SHA256CryptoServiceProviderはOSのCrypto Service Providerを使用しますので、OSの影響を受けます。記事の通りであれば動作しない環境もあるということでしょう。
- SHA256ManagedはC#での実装ですのでパフォーマンスに難がありますが全ての環境で動作します(たぶん)。
- SHA256CngはOSのCryptography API: Next Generationを使用します。これはVista以降で提供される機能なのでXP、2003では動作しません。
これらは共通の親クラスSHA256を持ちますので、インスタンス生成部分だけ分岐してやることで、コードを共通化できるよう設計されています。
付け加えると、各々のクラスのコンストラクターを直接呼び出す必要はなくSHA256.Create()メソッドにクラス名文字列を渡すことでそれぞれのクラスインスタンスを作成できます。つまり文字列を切り替える分岐だけで済みます。
更に付け加えると、暗号化クラスへのアルゴリズム名の割り当てによりapp.config構成ファイルによって切り替える機能も提供されています。つまりコード上の分岐を排除することもできます。ですので、「Windows XP SP3 + .Net Framework 4.0の組み合わせではSHA256が使えない」というタイトルはちょっと盛り過ぎに感じます。
# 上記機能を理解した上での記事とは思えませんでした…。いろいろ書きましたが、SHA256.Create()メソッド(引数無し)で作成されるデフォルトはSHA256Managedでした。デフォルトを使う限り無関係な話題ということでした…。