PrivateKeyInfo é uma SEQUENCE com uma versão, o privateKeyAlgorithm (um AlgorithmIdentifier), a OCTET STRING privateKey e atributos opcionais; a octet string contém a chave específica do algoritmo (um RSAPrivateKey do PKCS #1, um ECPrivateKey da SEC 1, uma semente Ed25519 de 32 bytes envolvida conforme a RFC 8410, uma semente ou uma chave expandida de ML-DSA). A versão 2 da RFC 5958 acrescenta uma chave pública opcional.
O EncryptedPrivateKeyInfo envolve essa estrutura com criptografia baseada em senha, hoje o PBES2 (RFC 8018). Quando se pede criptografia, o OpenSSL 3.6 grava PBES2 com PBKDF2-HMAC-SHA256 e AES-256-CBC; chaves mais antigas podem usar PBES1 com DES ou RC2, que as bibliotecas modernas recusam.
Como nomeia o algoritmo, o PKCS #8 é o formato que a maioria das bibliotecas espera: o OpenSSL 3 o grava por padrão, e o PKCS8EncodedKeySpec do Java, o x509.ParsePKCS8PrivateKey do Go, o createPrivateKey do Node e a importação pkcs8 do WebCrypto o usam. Converta outros formatos com openssl pkcs8 -topk8 -nocrypt ou openssl pkey.