der解碼規則 DER 編碼規範理解

2021-10-12 13:27:08 字數 1045 閱讀 1656

這幾天在研究 x.509 證書和 der 編碼的解碼資訊。

1. 基本概念

在 tls/ssl 協議中,服務端需要向客戶端提供乙個證書,以證明自己的身份。

這個證書裡面包含了服務端的加密公鑰、一些用於描述自己身份的資訊,以及乙個簽名。

x.509 是現代公鑰證書的格式規範,目前常用。

如果看到這裡不理解什麼是 x.509 證書,請自行補課。

x.509 證書有很多種格式,本文只描述 der 編碼的格式。

2. 證書結構

乙個 x.509 證書,其結構使用 asn.1 語法描述如下:

此處只需隨便看一眼,具體解釋看下文。

certificate ::= sequence

certificateserialnumber ::= integer

validity ::= sequence {

notbefore time,

notafter time

time ::= choice {

utctime utctime,

generaltime generalizedtime

uniqueidentifier ::= bit string

subjectpublickeyinfo ::= sequence {

algorithm algorithmidentifier,

subjectpublickey bit string

extensions ::= sequence size (1..max) of extension

extension ::= sequence {

extnid object identifier,

critical boolean default false,

extnvalue octet string

-- contains the der encoding of an asn.1 value

-- corresponding to the extension type identified

-- by extnid

DER編碼規則詳解

der是ber的子集,它為每乙個asn.1型別定義一種唯一的編碼方案。der在ber的基礎上增加了如下限制 長度小於等於127,必須使用短型長度表示法。長度大於127,必須使用長型長度表示法,並且要盡可能的短。對於簡單的string型別以及在其基礎上隱性標籤生成的型別使用簡單定長表示法。對於結構化型...

ASN1之DER編碼規則

在說der之前先了解乙個概念,資料的序列化。什麼是資料的序列化呢,將高階語言 轉變成二進位製流的過程就是資料的序列化。資料序列化的目的就是物理儲存和網路傳輸。在高階語言中有許多結構化的結構,比如,樹,圖,結構體等,高階語言裡的 最終在網路中都是以二進位製流的形式進行傳輸的,但是對於結構化的資料除了編...

C 編碼規範(1) 命名規則

pascal 大小寫形式 所有單詞第乙個字母大寫,其他字母小寫。camel 大小寫形式 除了第乙個單詞,所有單詞第乙個字母大寫,其他字母小寫。1.類名使用pascal 大小寫形式 public class helloworld 2.方法使用pascal 大小寫形式 public class hell...