Как преобразовать закрытый ключ в шестнадцатеричном формате в закрытый ключ в формате pem и / или der? - PullRequest
0 голосов
/ 28 января 2019

У меня есть этот закрытый ключ в шестнадцатеричном формате:

, и я хотел бы преобразовать его в der и pem и подписать с ним файл, чтобы другая сторона могла проверить подпись с помощьюих открытый ключ.

Я пытаюсь сделать это в скрипте bash, используя openssl и xxd, и я подумываю попробовать с python, но пока как-то не могу заставить его работать.

Если у кого-то есть идеи, я буду рад их услышать.

РЕДАКТИРОВАТЬ:

Например, я могу конвертировать гекс в pem с помощью онлайн-конвертера https://holtstrom.com/michael/tools/hextopem.php и сохраняю его.в файле private_key.pem с ----- BEGIN / END RSA PRIVATE KEY ----- верхним / нижним колонтитулом, и если я проверяю модуль закрытого и соответствующего открытого ключа, они совпадают, но я не могу загрузить этот ключ где-либо, чтобы использоватьЭто для подписи OpenSSL также не будет загружать ключ, поэтому я думаю, что я что-то упустил.

1 Ответ

0 голосов
/ 31 января 2019

С помощью вашего шестнадцатеричного входного файла (rsa-key-hex.txt) вы можете сделать следующее -

Преобразовать его в двоичный файл (фактически формат DER) -

xxd -r -ps rsa-key-hex.txt rsa-key.der

Распечатать закрытый ключ DER -

openssl pkey -in rsa-key.der -inform der -noout -text

Преобразовать его в PEM -

openssl pkey -in rsa-key.der -inform der -out rsa-key.pem -outform pem

Подписать некоторые входные данные с помощью закрытого ключа -

echo "Some Input" | openssl dgst -sha256 -sign rsa-key.pem > signature.dat

Извлечь открытыйключ -

openssl pkey -in rsa-key.pem -pubout -out rsa-key-pub.pem

Проверка подписи с использованием открытого ключа -

echo "Some Input" | openssl dgst -sha256 -verify rsa-key-pub.pem -signature signature.dat

В качестве альтернативы, проверка подписи с использованием личного ключа напрямую -

echo "Some Input" | openssl dgst -sha256 -prverify rsa-key.pem -signature signature.dat
...