У меня есть открытый ключ, который находится в SubjectPublicKeyInfo
формат. Я говорю «появляется», потому что единственное, что я знаю об этом ключе, это то, что он загружает приложение Java, используя X509EncodedKeySpec
который, согласно документация используется для загрузки ключей в SubjectPublicKeyInfo
формат.
Мне не удалось разобрать файл с помощью openssl
либо с pkcs8
, x509
или asn1parse
.
Ниже приведен результат синтаксического анализа asn1:
openssl asn1parse -in public_key.der -inform der
0:d=0 hl=4 l= 290 cons: SEQUENCE
4:d=1 hl=2 l= 13 cons: SEQUENCE
6:d=2 hl=2 l= 9 prim: OBJECT :rsaEncryption
17:d=2 hl=2 l= 0 prim: NULL
19:d=1 hl=4 l= 271 prim: BIT STRING
Основываясь на этом выводе, я попытался извлечь фактический ключ, экспериментируя с разными смещениями и длинами, а затем сохранив его в файле .der:
openssl asn1parse -in public_key.der -inform der -offset <> -length <l> -out public_key.der
Затем я вернул результат обратно в openssl
:
openssl pkcs8 -inform DER -nocrypt -in public_key.der
Но продолжайте получать ту же ошибку:
Ошибка дешифрования ключа 140436029183664: ошибка: 0D0680A8: подпрограммы кодирования asn1: ASN1_CHECK_TLEN: неправильный тег: tasn_dec.c: 1338: 140436029183664: ошибка: 0D06C03A: подпрограммы кодирования asn1: ошибка ASN1_D2I_c43: nIM_PRIT1: ошибка 851_D2c. 0D08303A: процедуры кодирования asn1: ASN1_TEMPLATE_NOEXP_D2I: вложенная ошибка asn1: tasn_dec.c: 772: поле = версия, тип = PKCS8_PRIV_KEY_INFO
Обновление: вывод
openssl asn1parse -in public_key.der -inform der -strparse 19
0:d=0 hl=4 l= 266 cons: SEQUENCE
4:d=1 hl=4 l= 257 prim: INTEGER :F19011E8903CFE79920F5D06CBF6B57593038DBDDEFEF30C796287264100DC930E2F5F2C7CFBAA84C0212228288D76B97EC7FC1FF6409770292386B5EFC15C3AF999F6FED14EA1D3419EB87F8188E1D21358F95EEA4642716A298A23CE6F98E03DE8D56A4101F39983F4444A3924BBD49A9C721BE5F4637EF09ACE0486C065433CA9B3353D6852364EC4211BEFC24AFD0CB7BFD2ECAE0D0F8B48BE7E7CBE336ABED9A7C0E0B6D468D4D6E6C05FA1680BB2BD7E8DA6FE201BAFDD6B30CF3A7381BCC47DC7F8B4F52715C052DEF3EB361064B2AD8523E6C186B59A320DC7DFE092FD2D668AD5516EAE25103FD66DA579E097D10A4ACAAFF3B9CA528448B2A625FF
265:d=1 hl=2 l= 3 prim: INTEGER :010001
А SubjectPublicKeyInfo
файл можно использовать с openssl rsa -pubin -inform der|pem -file inputfile -modulus
.
Если он в двоичном формате, используйте der
, если он закодирован в base64, используйте pem
.