Rsa

如何在數字證書中找到公鑰

  • February 5, 2022

我可以在 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 個字節。就是那兩個整數。

引用自:https://crypto.stackexchange.com/questions/98512