У меня есть пара секретных / открытых ключей, которая была сгенерирована кем-то другим и передана мне.В настоящее время пара используется в активном развертывании.Оба ключа хранятся в файлах с расширением .der.Закрытый ключ, который я могу проверить и правильно проанализировать:
openssl pkcs8 -inform DER -nocrypt -in private_key.der
Открытый, однако не работает с:
Ошибка расшифровки ключа 139834801850032: ошибка: 0D0680A8: процедуры кодирования asn1: ASN1_CHECK_TLEN: неправильный тег: tasn_dec.c: 1338: 139834801850032: ошибка: 0D06C03A: ошибка кодирования asn1: ASN1_ND: 139834801850032: ошибка: 0D08303A: подпрограммы кодирования asn1: ASN1_TEMPLATE_NOEXP_D2I: вложенная ошибка asn1: tasn_dec.c: 772: поле = версия, тип = PKCS8_PRIV_KEY_INFO
и используется открытым ключом java.загружается следующим образом:
byte[] publicKeyArray - <the public key bytes straight from file>
X509EncodedKeySpec spec = new X509EncodedKeySpec(publicKeyArray);
KeyFactory factory = KeyFactory.getInstance("RSA");
java.security.PublicKey publicKey = factory.generatePublic(spec);
Документация класса для X509EncodedKeySpec гласит:
<code> * This class represents the ASN.1 encoding of a public key,
* encoded according to the ASN.1 type {@code SubjectPublicKeyInfo}.
* The {@code SubjectPublicKeyInfo} syntax is defined in the X.509
* standard as follows:
*
* <pre>
* SubjectPublicKeyInfo ::= SEQUENCE {
* algorithm AlgorithmIdentifier,
* subjectPublicKey BIT STRING }
*
и:
* Creates a new X509EncodedKeySpec with the given encoded key.
*
* @param encodedKey the key, which is assumed to be
* encoded according to the X.509 standard. The contents of the
* array are copied to protect against subsequent modification.
* @exception NullPointerException if {@code encodedKey}
* is null.
*/
Я пробовалэкспериментировал с различными командами openssl, включая asn1parse, но не повезло.Как я могу использовать / извлечь открытый ключ из моего файла, используя что-то кроме java X509EncodedKeySpec?