次の方法で共有


キーのインポートとエクスポート

CNG を使用 対称キー および非対称キーをインポートおよびエクスポートできます。 また、キーのエクスポートとインポートの機能を使用して、マシン間でキーを移動できます。

対称キー

一部のデータの暗号化と暗号化解除に同じキーを使用する対称 (またはセッション) キーをインポートまたはエクスポートするには、BCryptImportKey を使用し、BCryptExportKey関数をできます。 通常は、BCryptImportKey 関数を使用してインポートする前に、BCryptExportKey 関数を使用してキーをエクスポートします。 この関数は、hExportKey パラメーターと hImportKey パラメーターを使用して、エクスポートおよびインポートされたキーの暗号化 を有効にするように設計されています。ただし、これらの関数の Microsoft の実装では、エクスポートされたキーとインポートされたキーの暗号化はサポートされていません。

非対称キー

一方のキーが暗号化に使用され、もう一方のキーが一部のデータの暗号化解除に使用される非対称 (または パブリック/プライベート) キー ペアをインポートするには、BCryptImportKeyPair または NCryptImportKey関数使用できます。 CNG プロバイダーは、サポートされている キー BLOB 型を使用してキー ペアをエンコードする必要があります。 BCryptExportKey を使用して、エンコードされたキー BLOB を作成できます。 CNG 構造体 では、Microsoft Key Storage Provider がサポートする主要な BLOB の種類と構造について説明します。

BCryptExportKey で永続化されたキー ペアを作成するには、入力キー BLOB に 秘密キーが含まれている必要があります。 公開キー は保持されません。

キー名とエクスポート ポリシーは、CNG 構造体で定義されている BLOB 構造体の一部ではありません。 ただし、BLOB が不透明な BLOB の種類 (内部キー状態のメモリ イメージなど) の場合、BLOB にはキー名と export-policy プロパティが含まれている可能性があります。

次の手順では、永続化された秘密キーとそのプロパティをインポートする方法について説明します。

永続化されたキー をインポートするには

  1. NCryptCreatePersistedKey 関数を使用して、永続化されたキーを作成します。
  2. NCryptSetProperty 関数を使用して、キー オブジェクトに必要なプロパティを設定します。
  3. インポート キー BLOB をキーのプロパティとして設定し、BLOB の種類をプロパティ名として設定します。
  4. NCryptFinalizeKey 関数を使用して、永続化されたキーのインポートを完了します。