PrivateKeyInfo ist eine SEQUENCE aus einer Version, dem privateKeyAlgorithm (einem AlgorithmIdentifier), dem OCTET STRING privateKey und optionalen Attributen; der Octet String enthält den algorithmusspezifischen Schlüssel (einen RSAPrivateKey nach PKCS #1, einen ECPrivateKey nach SEC 1, einen 32-Byte-Seed für Ed25519, verpackt nach RFC 8410, einen ML-DSA-Seed oder einen expandierten ML-DSA-Schlüssel). Version 2 nach RFC 5958 ergänzt einen optionalen öffentlichen Schlüssel.
EncryptedPrivateKeyInfo verpackt diese Struktur mit passwortbasierter Verschlüsselung, heute PBES2 (RFC 8018). OpenSSL 3.6 schreibt PBES2 mit PBKDF2-HMAC-SHA256 und AES-256-CBC, wenn es verschlüsseln soll; ältere Schlüssel können PBES1 mit DES oder RC2 verwenden, was moderne Bibliotheken ablehnen.
Weil PKCS #8 den Algorithmus nennt, ist es das Format, das die meisten Bibliotheken erwarten: OpenSSL 3 schreibt es standardmäßig, und PKCS8EncodedKeySpec von Java, x509.ParsePKCS8PrivateKey von Go, createPrivateKey von Node und der Import pkcs8 von WebCrypto verwenden es alle. Andere Formate konvertierst du mit openssl pkcs8 -topk8 -nocrypt oder openssl pkey.