Puncte:2

Cum să găsiți cheia publică într-un certificat digital

drapel cn

Pot vedea care cred că ar trebui să fie cheia publică în fila Detalii pentru certificatul StackOverflow (vezi captura de ecran de mai jos). Cu toate acestea, are 2160 (număr de caractere (540) înmulțit cu 4 = 2160) biți, nu 2048 așa cum specifică.

Când văd detaliile certificatului folosind openssl în cmd, pot vedea o versiune mai mică a cheii publice, care este 514 nibbles * 4 = 2056 biți, care este un octet față de 2048.

Am observat că primul octet este 00. Primul octet trebuie ignorat pentru că este 0? De ce este afișat în openssl?

Dacă primul octet trebuie ignorat, înseamnă că cheia publică reală începe cu b2 si se termina in af?

De ce Windows afișează octeți suplimentari înainte și după cheia publică în fila Detalii?

Am folosit Notepad în captură de ecran pentru a afișa valoarea completă a ceea ce este în fila Detalii.

introduceți descrierea imaginii aici

Actualizați:

Mi-am dat seama că majoritatea octeților sunt modulul, iar exponentul 0x010001 este la sfârșit:

introduceți descrierea imaginii aici

Dar ce este 02 03 intre modul si exponent?

Și ce este 30 82 01 0a 02 82 01 01 00 inainte de modul?

fgrieu avatar
drapel ng
Încercați să lipiți hexadecimalul într-un [decodor ASN.1](https://lapo.it/asn1js/)
dave_thompson_085 avatar
drapel cn
Întrebarea dvs. nu este găsirea cheii publice -- ați găsit-o deja. Întrebarea ta este _decodificarea_. După cum spune https://datatracker.ietf.org/doc/html/rfc3279#section-2.3.1, este codificarea DER a structurii ASN.1 RSAPublicKey din PKCS1 și, după cum spune meshcollider, DER este acum în X.690, deși https://en.wikipedia.org/wiki/X.690 este mai ușor de citit decât documentul actual ITU-T, la fel și https://letsencrypt.org/docs/a-warm-welcome-to-asn1- şi-der/ .
Puncte:4
drapel gb

Conform X.690, formatul începe cu 0x30 pentru a desemna o succesiune. Urmează lungimea totală. Primul octet al lungimii este 0x82. Deoarece bitul cel mai înalt este setat aici, înseamnă că acest octet codifică lungimea a lungimii. Cu alte cuvinte, următorii 2 octeți codifică lungimea reală.Acei octeți sunt 0x010a, sau 266 de octeți.

Acum lovim o altă etichetă. De data asta este 0x02, adică un număr întreg. Lungimea începe cu 0x82 din nou, așa că știm că următorii 2 octeți codifică lungimea. Acestea sunt 0x0101, deci lungimea totală a acestui număr întreg este de 257 de octeți. Acești 257 de octeți sunt cei pe care i-ați evidențiat. Motivul extra 0x00 octetul este inclus la început deoarece numerele întregi BER sunt semnate și reprezentate în complementul 2 - dacă nu ar exista niciun octet nul principal, acesta ar fi interpretat ca un număr negativ, deoarece următorul octet 0xb2 are cel mai mare set de biți.

După acei 257 de octeți pentru modul, lovim o altă etichetă: 0x02 din nou. Un alt număr întreg. De data aceasta primul octet (0x03) din lungime nu are cel mai mare set de biți, deci lungimea este pur și simplu de 3 octeți. Acești 3 octeți sunt 0x010001, sau 65537. Acesta este exponentul public.

Și asta totalizează 266 de octeți, așa cum era de așteptat pentru întreaga secvență. Sunt doar acele 2 numere întregi.

DannyNiu avatar
drapel vu
Am editat răspunsul pentru a explica de ce octetul nul principal este acolo.

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.