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

键的指数的大小(以字节为单位)。 从Windows 10版本 1903 开始,不再支持大于 (2^64 - 1) 的公共指数。

cbModulus

键模数的大小(以字节为单位)。

cbPrime1

键的第一个质数的大小(以字节为单位)。 这仅用于私钥 BLOB。

cbPrime2

键的第二质数的大小(以字节为单位)。 这仅用于私钥 BLOB。

注解

此结构用作较大缓冲区的标头。 RSA 公钥 BLOB (BCRYPT_RSAPUBLIC_BLOB) 在连续内存中具有以下格式。 结构后面的所有数字都采用 big-endian 格式。


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

RSA 私钥 BLOB (BCRYPT_RSAPRIVATE_BLOB) 在连续内存中具有以下格式。 结构后面的所有数字都采用 big-endian 格式。


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

完整的 RSA 私钥 BLOB (BCRYPT_RSAFULLPRIVATE_BLOB) 在连续内存中采用以下格式。 结构后面的所有数字都采用 big-endian 格式。

请注意,在不同版本的 Windows 中,PrivateExponent 从 BCryptExportKey 的调用中获取的值可能不同,因为 cbModulus 字节中 PrivateExponent 的几个数学等效表示形式。 值得注意的是,在某些版本中,PrivateExponent 将导出 modulo (Prime1 - 1) * (Prime2 - 1) ,而在某些版本中,将导出 modulo 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 [仅限桌面应用]
标头 bcrypt.h

另请参阅

BCRYPT_KEY_BLOB

BCryptExportKey

BCryptImportKey