RSAPublicKey — это просто SEQUENCE из модуля и открытой экспоненты. RSAPrivateKey содержит version, n, e, d, p, q, dP, dQ, qInv и необязательные дополнительные простые числа. Ни одна из структур не содержит идентификатора алгоритма, поэтому формат может описывать только RSA, а в метке PEM обязательно должно стоять RSA.
PKCS #8 упаковывает те же байты RSAPrivateKey в PrivateKeyInfo с OID алгоритма (rsaEncryption, 1.2.840.113549.1.1.1), а для открытых ключей RSAPublicKey точно так же упаковывается в SubjectPublicKeyInfo. OpenSSL 3 по умолчанию записывает PKCS #8 (BEGIN PRIVATE KEY), в том числе из openssl rsa; флаг -traditional даёт PKCS #1. PKCS8EncodedKeySpec в Java и многие библиотеки JWT принимают только PKCS #8 или SPKI, отсюда знакомая ошибка со старыми ключами в стиле id_rsa.
Не путайте формат ключей с дополнениями PKCS #1 для подписи и шифрования: RFC 8017 определяет все три, но когда говорят «ключ PKCS #1», имеют в виду только формат файла.