次の方法で共有


BCRYPT_RSAKEY_BLOB 構造体 (bcrypt.h)

BCRYPT_RSAKEY_BLOB構造体は、メモリ内の RSA 公開キーまたは秘密キーBLOB のヘッダーとして使用されます。

構文

typedef struct _BCRYPT_RSAKEY_BLOB {
  ULONG Magic;
  ULONG BitLength;
  ULONG cbPublicExp;
  ULONG cbModulus;
  ULONG cbPrime1;
  ULONG cbPrime2;
} BCRYPT_RSAKEY_BLOB;

メンバー

Magic

この BLOB が表す RSA キーの種類を指定します。 次のいずれかの値を指定できます。

意味
BCRYPT_RSAPUBLIC_MAGIC
キーは RSA 公開キーです。
BCRYPT_RSAPRIVATE_MAGIC
キーは RSA 秘密キーです。
BCRYPT_RSAFULLPRIVATE_MAGIC
キーは完全な RSA 秘密キーです。

BitLength

キーのサイズ (ビット数)。

cbPublicExp

キーの指数のサイズ (バイト単位)。 バージョン 1903 Windows 10現在、(2^64 - 1) より大きいパブリック指数はサポートされなくなりました。

cbModulus

キーの剰余のサイズ (バイト単位)。

cbPrime1

キーの最初の素数のサイズ (バイト単位)。 これは、秘密キー BLOB にのみ使用されます。

cbPrime2

キーの 2 番目の素数のサイズ (バイト単位)。 これは、秘密キー BLOB にのみ使用されます。

注釈

この構造体は、より大きなバッファーのヘッダーとして使用されます。 RSA 公開キー BLOB (BCRYPT_RSAPUBLIC_BLOB) は、連続したメモリ内に次の形式を持ちます。 構造体に続くすべての数値は、ビッグ エンディアン形式です。


BCRYPT_RSAKEY_BLOB
PublicExponent[cbPublicExp] // Big-endian.
Modulus[cbModulus] // Big-endian.

RSA 秘密キー BLOB (BCRYPT_RSAPRIVATE_BLOB) は、連続したメモリに次の形式を持ちます。 構造体に続くすべての数値は、ビッグ エンディアン形式です。


BCRYPT_RSAKEY_BLOB
PublicExponent[cbPublicExp] // Big-endian.
Modulus[cbModulus] // Big-endian.
Prime1[cbPrime1] // Big-endian.
Prime2[cbPrime2] // Big-endian.

完全な RSA 秘密キー BLOB (BCRYPT_RSAFULLPRIVATE_BLOB) は、連続したメモリに次の形式を持ちます。 構造体に続くすべての数値は、ビッグ エンディアン形式です。

Windows の異なるバージョンでは、PrivateExponent が BCryptExportKey の呼び出しから受け取る値は、cbModulus バイトで PrivateExponent のいくつかの数学的に同等の表現があるため、異なる場合があることに注意してください。 特に、一部のバージョンでは、PrivateExponent は剰余 (Prime1 - 1) * (Prime2 - 1) がエクスポートされ、他のバージョンでは剰余 LeastCommonMultiple(Prime1 - 1, Prime2 - 1) がエクスポートされます。


BCRYPT_RSAKEY_BLOB
PublicExponent[cbPublicExp] // Big-endian.
Modulus[cbModulus] // Big-endian.
Prime1[cbPrime1] // Big-endian.
Prime2[cbPrime2] // Big-endian.
Exponent1[cbPrime1] // Big-endian.
Exponent2[cbPrime2] // Big-endian.
Coefficient[cbPrime1] // Big-endian.
PrivateExponent[cbModulus] // Big-endian.

要件

要件
サポートされている最小のクライアント Windows Vista [デスクトップ アプリのみ]
サポートされている最小のサーバー Windows Server 2008 [デスクトップ アプリのみ]
Header bcrypt.h

こちらもご覧ください

BCRYPT_KEY_BLOB

BCryptExportKey

BCryptImportKey