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 密钥的类型。 这可以是以下值之一。
值 | 含义 |
---|---|
|
密钥是 RSA 公钥。 |
|
密钥是 RSA 私钥。 |
|
密钥是完整的 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 |