7

Web アプリケーション、Windows サービス、wcf レイヤーなど、暗号化の一意のソルトとして使用できるすべての C# アプリケーションで、どのような情報を見つけることができますか?

System.Security.Cryptography.ProtectedData.Protect()(DPAPI) メソッドとメソッドを使用して、構成ファイルに保存されている機密データを簡単に暗号化できるライブラリを作成したいと考えていますSystem.Security.Cryptography.ProtectedData.Unprotect()

ライブラリは、値を使用しているアプリケーションの外部で構成値を暗号化および復号化できる、私が作成している別のアプリケーションでも使用されます。ソースは常に利用可能である必要があります。

ソルトは、別のアプリケーションに手動で入力できるほど単純でなければなりません (たとえば、GUID を識別するのは困難です)。

System.Reflection.Assembly.GetEntryAssembly()それが私が作成しているこのライブラリを呼び出すアプリケーション/サービスのアセンブリである場合、そこに何かを使用できます。最初の考えは、「ソルトを、暗号化されたデータが保存されている構成ファイル名にする...」でしたが、Web サイトの場合、構成ファイルは常に「web.config」です。

他の考えを歓迎します。

アップデート...

「GetExecutingAssembly()」...「GetEntryAssembly()」とどう違うのですか?

4

2 に答える 2

1

すべてのアプリケーション/アセンブリにはバージョン番号があり、これはオプションになる可能性があります。

System.Reflection.Assembly.GetExecutingAssembly().GetName().Version.ToString();
于 2013-03-21T11:02:42.430 に答える
0

System.Reflection.Assembly.GetEntryAssembly().GetName().Name...

exe または DLL の名前のように見えます。より正確には、VS2010 はアセンブリ名を exe の名前として使用します。これが Web サイトやサービスでどのように機能するかを調査する必要があります。

構成値を暗号化および復号化する外部アプリケーション (暗号化アプリ) が、要求されたアセンブリの「名前」(暗号化された構成を使用するプログラム) を「覗く」こともできる場合、暗号化ライブラリを使用するアプリケーションは、salt を提供せずにライブラリを使用するだけです。 、そしてライブラリはそれ自体のアセンブリ名(誰がそれを呼び出しているか)を解決し、それをソルトとして使用できます。dll または exe の名前が変更された場合、暗号化アプリに組み込まれたアセンブリ名の値を取得するメカニズムがあります。

ps自分の回答を「承認済み」とマークしたくないので、提案を改良して自分の回答に入れます。良い回答が得られたら、そのうちの1つを「承認済み」とマークすることを約束します。

于 2013-03-21T15:50:09.547 に答える