私たちのアプリケーションは、クライアントの場所にインストールされています。アプリケーションは、ProtectedData.Protect メソッドを使用してクライアント マシン上のキーを保護し、出力をファイルに保存します。以下はコードです:
ProtectedData.Protect(sampleHashKey, entropy, DataProtectionScope.LocalMachine);
Entropy
はバイト配列です。
クライアントは、そのマシンのオペレーティング システムを Windows 2016 Server に更新し、その前にハッシュ キー ファイルをバックアップし、新しいハッシュ キー ファイルを作成したソフトウェアを再インストールしました。クライアントは、新しいハッシュ キー ファイルをバックアップ ファイルに置き換えました。ソフトウェアが次のコードで保護解除メカニズムを使用してファイルを読み取ろうとしたときに
ProtectedData.Unprotect(sampleHashKey, entropy, DataProtectionScope.LocalMachine);
、CryptographicException がエラーでスローされました: Key not valid for use in specified state.
ファイルがDataProtectionScope.Localmachineと同じマシンで作成されたにもかかわらず、このエラーが発生したのはなぜですか? 同じマシン上で OS をまたいで動作しませんか? 誰かが私に問題を説明してもらえますか?