請參閱https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem(在頁面中搜索“BEGIN RSA PRIVATE KEY”)(后人的存檔鏈接,以防萬一)属桦。
BEGIN RSA PRIVATE KEY
是 PKCS#1拆座,只是一個(gè) RSA 密鑰犀概。它本質(zhì)上只是 PKCS#8 中的密鑰對象,但前面沒有版本或算法標(biāo)識符彤钟。BEGIN PRIVATE KEY
是 PKCS#8,表示密鑰類型包含在密鑰數(shù)據(jù)本身中。從鏈接:
未加密的 PKCS#8 編碼數(shù)據(jù)以標(biāo)簽開頭和結(jié)尾:
-----BEGIN PRIVATE KEY----- BASE64 ENCODED DATA -----END PRIVATE KEY-----
在 base64 編碼數(shù)據(jù)中拨黔,存在以下 DER 結(jié)構(gòu):
PrivateKeyInfo ::= SEQUENCE { version Version, algorithm AlgorithmIdentifier, PrivateKey BIT STRING } AlgorithmIdentifier ::= SEQUENCE { algorithm OBJECT IDENTIFIER, parameters ANY DEFINED BY algorithm OPTIONAL }
所以對于 RSA 私鑰,OID 是 1.2.840.113549.1.1.1 并且有一個(gè) RSAPrivateKey 作為 PrivateKey 密鑰數(shù)據(jù)位串傲武。
與BEGIN RSA PRIVATE KEY
, 它始終指定 RSA 密鑰相反蓉驹,因此不包含密鑰類型 OID城榛。BEGIN RSA PRIVATE KEY
是PKCS#1
:
RSA 私鑰文件(PKCS#1)
RSA 私鑰 PEM 文件特定于 RSA 密鑰。
它以標(biāo)簽開頭和結(jié)尾:
-----BEGIN RSA PRIVATE KEY----- BASE64 ENCODED DATA -----END RSA PRIVATE KEY-----
在 base64 編碼數(shù)據(jù)中态兴,存在以下 DER 結(jié)構(gòu):
RSAPrivateKey ::= SEQUENCE { version Version, modulus INTEGER, -- n publicExponent INTEGER, -- e privateExponent INTEGER, -- d prime1 INTEGER, -- p prime2 INTEGER, -- q exponent1 INTEGER, -- d mod (p-1) exponent2 INTEGER, -- d mod (q-1) coefficient INTEGER, -- (inverse of q) mod p otherPrimeInfos OtherPrimeInfos OPTIONAL }