DER編碼規則

概念:
DER是BER的子集,它爲每一個ASN.1類型定義一種唯一的編碼方案。

DER與BER的區別:
DER在BER的基礎上增加了如下限制:
長度小於等於127,必須使用短型長度表示法。
長度大於127,必須使用長型長度表示法,並且要儘可能的短。
對於簡單的string類型以及在其基礎上隱性標籤生成的類型使用簡單定長表示法。
對於結構化類型以及在其基礎上隱性標籤生成的類型以及所有的顯示類型使用結構化定長表示法。
簡單定長表示法和結構化類型表示法的區別是在TLV的T中bit6是0還是1。

DER的組成:
無論什麼類型它的DER編碼都是有四部分組成:
類型字段tag  長度字段length   值字段value   結束表示字段
即T L V

類型字段:
由一個字節(即八個二進制位)組成。
bit8 bit7用來表示tag類型,universal是00  application是01  context-specific是10   private是11
bit6表示結構化位,0代表簡單類型,1代表結構類型
bit5-bit1表示tag值,tag值可以查表獲得。

長度字段(以字節爲計算單位):
長度字段分爲兩種:小於等於127和大於127
小於等於127:用一個字節表示。bit8=0,bit7-bit1表示長度值。
例子:38表示爲00100110

大於127:由多個字節組成
第一個字節:bit8=1,bit7-bit1表示存放長度所佔字節數(通俗的講就是後面還有幾個字節)
其餘字節:存放長度值
例如:201表示爲10000001 11001001

長度值不定:用0x80表示。

值字段:
不同的類型其值不同,但歸根結底類型都是二進制,或十進制,或十六進制 ,或者是ASCLL字符,將他們轉換爲16進制表示出來即可。

結束標識字段(不在TLV之中):
兩個字節,只有在長度值不定時纔會出現。表示爲0x000x00

完!
————————————————
版權聲明:本文爲CSDN博主「魚蝦一整碗」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/baidu_36649389/article/details/53538223

發佈了545 篇原創文章 · 獲贊 78 · 訪問量 53萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章