次の方法で共有


MachineKey.Protect(Byte[], String[]) メソッド

定義

指定されたデータを、暗号化または署名により保護します。

public:
 static cli::array <System::Byte> ^ Protect(cli::array <System::Byte> ^ userData, ... cli::array <System::String ^> ^ purposes);
public static byte[] Protect (byte[] userData, params string[] purposes);
static member Protect : byte[] * string[] -> byte[]
Public Shared Function Protect (userData As Byte(), ParamArray purposes As String()) As Byte()

パラメーター

userData
Byte[]

保護されるデータ。 このデータは、プレーンテキストとして渡されます。

purposes
String[]

データの目的の一覧。 この値が指定される場合、返された暗号文をデコードするために、同じリストが Unprotect(Byte[], String[]) メソッドに渡されます。

戻り値

Byte[]

暗号文データ。

例外

userData パラメーターが null です。

配列に空白のみのエントリが 1 つまたは複数含まれる目的。

注釈

このメソッドは、プレーンテキスト データを Encode 暗号化するか、署名するか、またはその両方を指定する必要があるメソッドよりも優先されます。 このメソッドは Protect 、適切な操作を実行し、データを安全に保護します。 このメソッドによって生成される暗号テキスト データは、メソッドによって Unprotect のみ解読できます。

このパラメーターは purposes 、暗号テキストを特定の目的にロックできる理由の省略可能なリストです。 このパラメーターを使用すると、アプリケーション内の異なるサブシステムによって実行される暗号化操作を分離できます。 悪意のあるクライアントは、あるサブシステムのメソッドの結果を取得し、それを別の Protect サブシステムのメソッドへの入力としてフィードすることはできず、アプリケーションの Unprotect セキュリティが損なわれる可能性があります。 このパラメーターは purposes 、保護されたデータを最初に生成したコンポーネントのみが使用できるようにするのに役立ちます。 アプリケーションでは、各サブシステムが一意 purposes のリストを使用していることを確認する必要があります。

たとえば、認証トークンを保護または保護解除するには、次の例のようなコードを使用してメソッドを呼び出すことができます。

MachineKey.Protect(..., "Authentication token");  
MachineKey.Unprotect(..., "Authentication token");  
MachineKey.Protect(..., "Authentication token")  
MachineKey.Unprotect(..., "Authentication token")  

アプリケーションは、パラメーターを purposes 動的に生成できます。 その場合、システムの他の部分で使用されるトークンと一致する悪意のあるクライアントが入力を作成するリスクを最小限に抑えるために、ユーザーが指定した値に固定値 ("Username: " + username など) をプレフィックスとして付けます。 動的に生成される文字列は、固定文字列の後に含める必要があります。 たとえば、特定のユーザーに関連付けられているプライベート メッセージを保護または保護解除するには、次の例のようなコードを使用します。

MachineKey.Protect(..., "Private message", "Recipient: " + username);  
MachineKey.Unprotect(..., "Private message", "Recipient: " + username);  
MachineKey.Protect(..., "Private message", "Recipient: " + username)  
MachineKey.Unprotect(..., "Private message", "Recipient: " + username)  

メソッドが Unprotect 呼び出されるとき、パラメーターに指定 purposes される値は、メソッドに Protect 指定された値と同じである必要があります。 それ以外の場合、操作は例外で CryptographicException 失敗します。

プロパティがオプションに設定されていない場合でも、 MachineKeyCompatibilityMode.Framework45 このメソッドにはオプションに MachineKeySection.CompatibilityMode 必要な構成設定 Framework45 が必要です。

適用対象