私钥blob(类型PRIVATEKEYBLOB)用于存储RSA公钥/私钥对。它们具有以下格式:
BLOBHEADER blobheader;
RSAPUBKEY rsapubkey;
BYTE modulus[rsapubkey.bitlen/8];
BYTE prime1[rsapubkey.bitlen/16];
BYTE prime2[rsapubkey.bitlen/16];
BYTE exponent1[rsapubkey.bitlen/16];
BYTE exponent2[rsapubkey.bitlen/16];
BYTE coefficient[rsapubkey.bitlen/16];
BYTE privateExponent[rsapubkey.bitlen/8];
如果密钥blob被加密,那么Blob中除BLOBHEADER部分之外的所有内容都将被加密。请注意,加密算法和加密密钥参数不会与私钥blob一起存储。应用程序有责任管理这些信息。
下表描述了每个私钥blob组件。请注意,这些字段大体上对应于【PKCS#1:RSA加密标准】第7.2节中描述的字段。
领域 | 描述 |
blobheader | 一个BLOBHEADER结构,如上一节所述。BTYPE字段必须始终为PRIVATEKEYBLOB的值。 |
rsapubkeyso | 如上一节所述的RSAPUBKEY结构。魔法字段必须始终为0x32415352(“RSA2”)。 |
系数 | 模数。它的值为“prime1 * prime2”,通常称为“n”。 |
prime1 | 素数1,通常称为“p”。 |
prime2 | 素数2,通常被称为“q”。 |
exponent1 | 指数1。它的数值为“d mod(p-1)”。 |
exponent2 | 指数2。它的数值为“d mod(q-1)”。 |
系数 | 系数。它的数值为“(q的倒数)mod p”。 |
privateExponent | 私人指数,通常被称为“d”。 |