Puncte:0

OpenSSL: Cum se convertesc cheia privată ec (cheie brută de 32 de octeți) în cheie privată de tip pem?

drapel cn

Am o cheie privată ec de șir de octeți de 32 de octeți.

Și vreau să convertesc aceasta la cheie privată de tip pem.

Eu folosesc curba secp256r1.

Cum pot face acest lucru?

Există vreo comandă sau metodă pentru asta?

Maarten Bodewes avatar
drapel in
Nu cred că puteți face acest lucru cu o singură comandă dintr-o linie de comandă, ar trebui să o programați.
Puncte:2
drapel cn

Meta: nu este vorba cu adevărat despre criptografie, ci despre utilizarea unui instrument de procesare a datelor legat doar parțial de cripto; dar din moment ce nimeni nu a votat să închidă (ceea ce pot vedea) voi merge înainte. Acesta poate fi șters dacă este necesar.

Nu tocmai, dar există o opțiune de comandă pentru a construi date ASN.1 arbitrare, care pot fi adaptate pentru asta cu puțină muncă, dacă aveți valoarea privată dorită în hex „plat”: pe Unix (dacă nu este deja hex) cu care puteți converti xxd -p -c32 sau od -An -tx1 | tr -d ' \n' sau similar, pe Windows sunteți pe cont propriu. Dat un fișier cu următorul conținut, cu excepția înlocuirii valorii private dorite:

asn1=SEQ:pkcs8c
[pkcs8c]
ver=INT:0
algid=SEQ:algid
date=OCTWRAP,SEQ:sec1
[algid]
alg=OID:id-ecPublicKey
parm=OID:prime256v1
[sec1]
ver=INT:1
privkey=FORMAT:HEX,OCT:0123456789ABCDEFFEDCBA98765432100123456789ABCDEFFEDCBA9876543210

atunci openssl asn1parse -genconf nume de fișier -noout [-out derfile] va crea formatul PKCS8-clear în DER și anexând | openssl pkey -inform der îl va converti în PEM. Sau pe Unix puteți converti în PEM „manual” cu ... | { printf '%s\n' '-----BEGIN PRIVATE KEY-----'; openssl base64; printf '%s\n' '-----END CHEIE PRIVATA-----'; }

Alternativ și mai hacker, codificarea DER a structurii descrise mai sus este constantă, cu excepția valorii private care apare ultima, așa că puteți pur și simplu să concatenați partea constantă cu valoarea privată pentru a obține DER PKC8-clear, apoi convertiți în PEM. ca mai sus:

# pe Unix, având în vedere cei 32 de octeți în binar din fișierul rawfile:
printf '\x30\x41\x02\x01\x00\x30\x13\x06\x07\x2a\x86\x48\xce=\x02\x01\x06\x08\x2a\x86\x48\xce=\x03 \x01\x07\x04\x27\x30\x25\x02\x01\x01\x04\x20'; cat rawfile;
# creează DER și pune-l în { } sau ( ) și trimite rezultatul la
# pkey -inform der sau alternativa manuală de mai sus se convertește în PEM

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.