2013-06-07 5 views
1

У меня есть шестнадцатеричная строка, которая, как утверждается, содержит открытый ключ EC. Мне нужно преобразовать эту шестнадцатеричную строку в формат PEM («key.pem» в следующем примере), чтобы исследовать содержимое, которое я планирую сделать с помощью «openssl ec -in key.pem -text -noout». Это возможно?Как преобразовать ключ ECDSA из шестнадцатеричного в формат PEM

ответ

0

Я принимаю hex, вы имеете в виду двоичный (DER отформатированный) ключ? Или это шестнадцатеричная строка в человеко-читаемом файле с заголовком, начинающимся с «----- BEGIN PUBLIC KEY -----»? Если вы видите этот заголовок, он уже находится в формате PEM.

Если это в двоичном формате, попробуйте это преобразовать двоичный ключ PEM:

openssl ec -in key.der -inform DER -pubin -out keyout.pem -outform PEM 

где «key.der» является ваш бинарный ключ.

Но вы также должны иметь возможность исследовать содержимое без преобразования в PEM. Просто используйте:

openssl ec -in key.der -inform DER -pubin -text -noout 
+0

Я ничего не знаю о ключе, за исключением следующего: - длина 114 символов (каждый символ в диапазоне 0-9 и от A до F, при этом 57 байт); -allegedly содержит публичный ECDSA ключевых –

+0

Первой команду возвращает (шестнадцатеричную строку в "ключе"): # OpenSSL ес -in ключа -Информа DER -pubin -out keyout.pem -outform PEM чтение EC ключ не в состоянии загрузить Key 3073398984: ошибка: 0D07209B: ASN1 процедуры кодирования: ASN1_get_object: слишком долго: asn1_lib.c: 142: 3073398984: ошибка: 0D068066: ASN1 кодирования подпрограммы: ASN1_CHECK_TLEN: плохой заголовок объекта: tasn_dec.c: 1306: 3073398984: error: 0D07803A: asn1 процедуры кодирования: ASN1_ITEM_EX_D2I: вложенная ошибка asn1: tasn_dec.c: 381: Тип = X509_ALGOR 3073398984: ошибка: 0D08303A: asn1 подпрограммы кодирования: ASN1_TEMPLATE_NOEXP_D2I: вложенная ошибка asn1: tasn_dec.c: 751: Field = algor, Тип = X509_PUBKEY –

+0

Второе: # openssl ec -in ключ информ DER -pubin -text -noout чтения EC ключ не удалось загрузить Key 3073931464: ошибка: 0D07209B: ASN1 кодирования подпрограммы: ASN1_get_object: слишком долго: asn1_lib.c: 142: 3073931464: ошибка: 0D068066: ASN1 процедуры кодирования: ASN1_CHECK_TLEN: плохой заголовок объекта: tasn_dec.c: 1306: 3073931464: ошибка: 0D07803A: ASN1 кодирования подпрограммы: ASN1_ITEM_EX_D2I: вложенная ASN1 ошибка: tasn_dec.c: 381: Тип = X509_ALGOR 3073931464: ошибка: 0D08303A: ASN1 подпрограммы кодирования: ASN1_TEMPLATE_NOEXP_D2I: вложенная ошибка asn1: tasn_dec.c: 751: Field = algor, Type = X509_PUBKEY –

2

Если вы начинаете с шестнадцатеричной строкой, вы должны проклясть декодировать его, чтобы получить DER-кодирование первым.

Шестнадцатеричная строка должна начинаться с 30..., что означает, что это последовательность ASN.1.

Эта команда оболочка будет гекс декодировать (с использованием xxd), а затем использовать OpenSSL для разбора полученного МЭД открытого ключа:

echo "30...." | xxd -r -p - | openssl ec -inform der -pubin -noout -text 

Для вывода ПЭМ, удалить -noout -text, добавить -pubout -out publickey.pem

echo "30...." | xxd -r -p - | openssl ec -inform der -pubin -pubout -out publickey.pem 

Если это фактически закрытый ключ, просто опустите -pubin и -pubout.

Смежные вопросы