Consulte https://polarssl.org/kb/cryptography/asn1-key-structures-in-der-and-pem (pesquise na página "BEGIN RSA PRIVATE KEY") ( link do arquivo para posteridade, apenas no caso).
BEGIN RSA PRIVATE KEYé PKCS # 1 e é apenas uma chave RSA. É essencialmente apenas o objeto-chave do PKCS # 8, mas sem o identificador de versão ou algoritmo à frente. BEGIN PRIVATE KEYé PKCS # 8 e indica que o tipo de chave está incluído nos próprios dados da chave. No link:
Os dados codificados PKCS # 8 não criptografados começam e terminam com as tags:
-----BEGIN PRIVATE KEY-----
BASE64 ENCODED DATA
-----END PRIVATE KEY-----
Nos dados codificados em base64, a seguinte estrutura DER está presente:
PrivateKeyInfo ::= SEQUENCE {
version Version,
algorithm AlgorithmIdentifier,
PrivateKey BIT STRING
}
AlgorithmIdentifier ::= SEQUENCE {
algorithm OBJECT IDENTIFIER,
parameters ANY DEFINED BY algorithm OPTIONAL
}
Portanto, para uma chave privada RSA, o OID é 1.2.840.113549.1.1.1 e existe um RSAPrivateKey como a cadeia de bits de dados da chave PrivateKey.
Ao contrário de BEGIN RSA PRIVATE KEY, que sempre especifica uma chave RSA e, portanto, não inclui um tipo de chave OID. BEGIN RSA PRIVATE KEYé PKCS#1:
Arquivo de chave privada RSA (PKCS # 1)
O arquivo PEM de chave privada RSA é específico para chaves RSA.
Começa e termina com as tags:
-----BEGIN RSA PRIVATE KEY-----
BASE64 ENCODED DATA
-----END RSA PRIVATE KEY-----
Nos dados codificados em base64, a seguinte estrutura DER está presente:
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
}