Điểm:2

Cách tìm khóa công khai trong chứng chỉ số

lá cờ cn

Tôi có thể thấy cái mà tôi cho là khóa công khai trong tab Chi tiết cho chứng chỉ của StackOverflow (xem ảnh chụp màn hình bên dưới). Tuy nhiên, nó dài 2160 (số ký tự (540) nhân với 4 = 2160) bit, không phải 2048 như nó chỉ định.

Khi tôi xem chi tiết chứng chỉ bằng cách sử dụng opensl trong cmd, tôi có thể thấy một phiên bản nhỏ hơn của khóa công khai là 514 nibble * 4 = 2056 bit, tức là giảm một byte so với năm 2048.

Tôi nhận thấy byte đầu tiên là 00. Có phải byte đầu tiên bị bỏ qua vì nó là 0 không? Tại sao nó được hiển thị trong openssl?

Nếu byte đầu tiên bị bỏ qua, điều này có nghĩa là khóa chung thực bắt đầu bằng b2 và kết thúc trong af?

Tại sao Windows hiển thị thêm byte trước và sau khóa chung trong tab Chi tiết?

Tôi đã sử dụng Notepad trong ảnh chụp màn hình để hiển thị toàn bộ giá trị của nội dung trong tab Chi tiết.

nhập mô tả hình ảnh ở đây

Cập nhật:

Tôi nhận ra rằng phần lớn các byte là mô đun và số mũ 0x010001 ở cuối:

nhập mô tả hình ảnh ở đây

Nhưng những gì là 02 03 giữa mô đun và số mũ?

Và cái gì là 30 82 01 0a 02 82 01 01 00 trước mô-đun?

fgrieu avatar
lá cờ ng
Hãy thử dán hex vào [Bộ giải mã ASN.1](https://lapo.it/asn1js/)
dave_thompson_085 avatar
lá cờ cn
Câu hỏi của bạn không phải là tìm khóa công khai -- bạn đã tìm thấy nó rồi. Câu hỏi của bạn là _decoding_ nó. Như https://datatracker.ietf.org/doc/html/rfc3279#section-2.3.1 cho biết đó là mã hóa DER của cấu trúc ASN.1 RSAPublicKey từ PKCS1 và như meshcollider cho biết DER hiện có trong X.690, mặc dù https://en.wikipedia.org/wiki/X.690 dễ đọc hơn tài liệu ITU-T thực tế và https://letsencrypt.org/docs/a-warm-welcome-to-asn1- cũng vậy and-der/ .
Điểm:4
lá cờ gb

Theo X.690, định dạng bắt đầu bằng 0x30 để biểu thị một dãy. Tiếp đến là tổng chiều dài. Byte đầu tiên có độ dài là 0x82. Vì bit cao nhất được đặt ở đây, nghĩa là byte này mã hóa độ dài chiều dài. Nói cách khác, 2 byte tiếp theo mã hóa độ dài thực tế.Những byte đó là 0x010a, hoặc 266 byte.

Bây giờ chúng tôi nhấn một thẻ khác. Lần này là 0x02, nghĩa là một số nguyên. Chiều dài bắt đầu bằng 0x82 một lần nữa, vì vậy chúng tôi biết 2 byte tiếp theo mã hóa độ dài. đó là 0x0101, vì vậy tổng độ dài của số nguyên này là 257 byte. 257 byte này là những byte bạn đã đánh dấu. Lý do thêm 0x00 byte được bao gồm ở phần đầu là do số nguyên BER được ký và biểu thị bằng phần bù 2 - nếu không có byte null ở đầu, nó sẽ được hiểu là số âm, vì byte tiếp theo 0xb2 có bộ bit cao nhất.

Sau 257 byte đó cho mô-đun, chúng tôi nhấn một thẻ khác: 0x02 lần nữa. Một số nguyên khác. Lần này byte đầu tiên (0x03) của độ dài không có tập bit cao nhất, vì vậy độ dài chỉ đơn giản là 3 byte. 3 byte này là 0x010001, hoặc 65537. Đó là số mũ công khai.

Và tổng cộng là 266 byte, như mong đợi cho toàn bộ chuỗi. Nó chỉ là 2 số nguyên đó.

DannyNiu avatar
lá cờ vu
Tôi đã chỉnh sửa câu trả lời để giải thích lý do tại sao byte nul hàng đầu lại ở đó.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.