如何在數字證書中找到公鑰
我可以在 StackOverflow 證書的詳細資訊選項卡中看到我認為應該是公鑰的內容(請參見下面的螢幕截圖)。但是,它是 2160(字元數 (540) 乘以 4 = 2160)位長,而不是它指定的 2048。
當我在 cmd 中查看證書詳細資訊
openssl
時,我可以看到一個較小版本的公鑰,即 514 個半字節 * 4 = 2056 位,即 2048 的一個字節。我注意到第一個字節是 00。第一個字節是否因為它是 0 而被忽略?為什麼會在openssl中顯示?
如果第一個字節被忽略,這是否意味著實際的公鑰以 開頭
b2
和結尾af
?為什麼 Windows 在詳細資訊選項卡中的公鑰前後顯示額外的字節?
我在螢幕截圖中使用了記事本來顯示“詳細資訊”選項卡中內容的全部價值。
更新:
我意識到大部分字節是模數,指數 0x010001 在末尾:
但是
02 03
模數和指數之間的關係是什麼?
30 82 01 0a 02 82 01 01 00
模數之前是什麼?
根據 X.690,格式
0x30
以表示序列開頭。接下來是總長度。長度的第一個字節是0x82
。因為這裡設置了最高位,這意味著這個字節編碼了 length的長度。換句話說,接下來的 2 個字節編碼實際長度。這些字節是0x010a
, 或 266 字節。現在我們打了另一個標籤。這次是
0x02
,表示整數。長度又開始0x82
了,所以我們知道後面的 2 個字節編碼了長度。這些是0x0101
,所以這個整數的總長度是 257 字節。這 257 個字節是您突出顯示的字節。開始中包含額外0x00
字節的原因是因為 BER 整數是有符號的並以 2 的補碼表示 - 如果沒有前導空字節,它將被解釋為負數,因為下一個字節0xb2
具有最高位設置。在模數的 257 個字節之後,我們又打了一個標籤:
0x02
再次。另一個整數。這次0x03
長度的第一個字節( )沒有設置最高位,所以長度只是 3 個字節。這 3 個字節是0x010001
, 或 65537。這是公共指數。正如整個序列所預期的那樣,總共有 266 個字節。就是那兩個整數。