PrivateKeyInfo は、バージョン、privateKeyAlgorithm(AlgorithmIdentifier)、privateKey の OCTET STRING、任意の属性からなる SEQUENCE です。このオクテット列には、アルゴリズム固有の鍵(PKCS #1 の RSAPrivateKey、SEC 1 の ECPrivateKey、RFC 8410 に従って包まれた 32 バイトの Ed25519 シード、ML-DSA のシードまたは展開された鍵)が入ります。RFC 5958 のバージョン 2 では、任意で公開鍵を含められるようになりました。
EncryptedPrivateKeyInfo は、これをパスワードベースの暗号化で包みます。現在使われているのは PBES2(RFC 8018)です。OpenSSL 3.6 は暗号化を指定されると、PBKDF2-HMAC-SHA256 と AES-256-CBC による PBES2 で書き出します。古い鍵では DES や RC2 による PBES1 が使われていることがあり、最近のライブラリはこれを受け付けません。
アルゴリズムを明示するため、PKCS #8 は多くのライブラリが前提とする形式です。OpenSSL 3 はデフォルトでこの形式を書き出し、Java の PKCS8EncodedKeySpec、Go の x509.ParsePKCS8PrivateKey、Node.js の createPrivateKey、WebCrypto の pkcs8 インポートはいずれもこの形式を使います。ほかの形式は openssl pkcs8 -topk8 -nocrypt または openssl pkey で変換してください。