2017-01-07 19 views
1

У меня есть цифровой сертификат (с расширением .crt), такие как:Извлечение открытого ключа из цифрового сертификата .CRT

-----BEGIN CERTIFICATE----- 
MIGSAgEBMCgGByqGSM49AQECHQD///////////////////////////////7//+Vt 
MAYEAQAEAQUEOQShRVszTfCZ3zD8KKFppGfp5HB1qQ9+ZQ62t6Rcfgif7X+6NEKC 
yvvW9+MZ98CwvVniykvbVW1hpQIdAQAAAAAAAAAAAAAAAAAB3OjS7GGEyvCpcXaf 
sfcCAQE= 
-----END CERTIFICATE----- 

Мой вопрос, как я могу извлечь простое число открытого ключа от него, не зная, что-нибудь еще? Я не могу найти какой-либо онлайн-конвертер для структуры, чтобы понять это.

+0

Представленное вами содержимое не является цифровым сертификатом. Это похоже на детали параметров, связанных с конкретной кривой (структура ASN.1 ECParameter). – Crypt32

+0

Это часть домашней работы о цифровых подписях. В нем говорится, что мне нужно выполнить некоторую операцию с простым числом p, которое можно найти в файле с расширением .der. Мне удалось преобразовать расширение .der в .crt, и я получил этот текст, но я не могу понять это, ведь это p из-за разделителя '/'. – student

+0

На самом деле это байтовый массив с кодировкой Base64 параметров ключа эллиптической кривой, закодированных DER-кодированием, поэтому слэши не являются разделителями. С помощью OpenSSL вы можете попробовать эту команду в отношении вашего файла: 'openssl ecparam -in secp256k1.pem -text -param_enc explicit -noout', где' secp256k1.pem' - ваш .der-файл. – Crypt32

ответ

0

Оказывается, этот файл фактически является блоком EC PARAMETERS для ключа ЕС, а не сертификатом. Я нашел это, сбросив структуры ASN.1 и сравнив его с другим ключом EC, который я сгенерировал.

$ openssl asn1parse -in test.pem -i -dump 
    0:d=0 hl=3 l= 146 cons: SEQUENCE 
    3:d=1 hl=2 l= 1 prim: INTEGER   :01 
    6:d=1 hl=2 l= 40 cons: SEQUENCE 
    8:d=2 hl=2 l= 7 prim: OBJECT   :prime-field 
    17:d=2 hl=2 l= 29 prim: INTEGER   :FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFEFFFFE56D 
    48:d=1 hl=2 l= 6 cons: SEQUENCE 
    50:d=2 hl=2 l= 1 prim: OCTET STRING 
     0001 - <SPACES/NULS> 
    53:d=2 hl=2 l= 1 prim: OCTET STRING 
     0000 - 05            . 
    56:d=1 hl=2 l= 57 prim: OCTET STRING 
     0000 - 04 a1 45 5b 33 4d f0 99-df 30 fc 28 a1 69 a4 67 ..E[3M...0.(.i.g 
     0010 - e9 e4 70 75 a9 0f 7e 65-0e b6 b7 a4 5c 7e 08 9f ..pu..~e....\~.. 
     0020 - ed 7f ba 34 42 82 ca fb-d6 f7 e3 19 f7 c0 b0 bd ...4B........... 
     0030 - 59 e2 ca 4b db 55 6d 61-a5      Y..K.Uma. 
    115:d=1 hl=2 l= 29 prim: INTEGER   :010000000000000000000000000001DCE8D2EC6184CAF0A971769FB1F7 
    146:d=1 hl=2 l= 1 prim: INTEGER   :01 

Закрепление заголовков позволяет читать файл, как это:

$ openssl ecparam -in test.pem -text 
Field Type: prime-field 
Prime: 
    00:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff:ff: 
    ff:ff:ff:ff:ff:ff:ff:ff:ff:fe:ff:ff:e5:6d 
A: 0 
B: 5 (0x5) 
Generator (uncompressed): 
    04:a1:45:5b:33:4d:f0:99:df:30:fc:28:a1:69:a4: 
    67:e9:e4:70:75:a9:0f:7e:65:0e:b6:b7:a4:5c:7e: 
    08:9f:ed:7f:ba:34:42:82:ca:fb:d6:f7:e3:19:f7: 
    c0:b0:bd:59:e2:ca:4b:db:55:6d:61:a5 
Order: 
    01:00:00:00:00:00:00:00:00:00:00:00:00:00:01: 
    dc:e8:d2:ec:61:84:ca:f0:a9:71:76:9f:b1:f7 
Cofactor: 1 (0x1) 
-----BEGIN EC PARAMETERS----- 
MIGSAgEBMCgGByqGSM49AQECHQD///////////////////////////////7//+Vt 
MAYEAQAEAQUEOQShRVszTfCZ3zD8KKFppGfp5HB1qQ9+ZQ62t6Rcfgif7X+6NEKC 
yvvW9+MZ98CwvVniykvbVW1hpQIdAQAAAAAAAAAAAAAAAAAB3OjS7GGEyvCpcXaf 
sfcCAQE= 
-----END EC PARAMETERS----- 

Что более красиво отформатирована версия предыдущего выпуска. Обратите внимание на правильный BEGIN EC PARAMETERS вместо BEGIN CERTIFICATE. Основной блок показан в выводе выше.

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

  • Нет связанных вопросов^_^