- 如何手動讀取asn文件編碼?
- 什麼是標籤長度值,是否有一個很好的教程?
在下面的例子我看他們每個人,但不乾淨對我來說,任何人都可以幫助閱讀他們每個人:手動讀取asn文件編碼
- 30 82 02 10 04 01 56 ...(更多的字節)
第一個字節是二進制的00110000。前兩位是00,所以類又是0.第三位是1,因此它是結構化的。最後五位是10000,所以標籤是16位十進制。下一個字節是82十六進制,它是十進制的130,它是128 + 2,後面的2個字節給出了長度。它們是02 10,它以「big-endian」格式解釋爲2 * 256 + 16 = 528。接下來的528個字節(從04 01 56開始)包含內容。
- DF 82 02 05 12 34 56 78 90
的第一個字節是二進制11011111。前兩位是11,所以這是第3類 - 私人。下一位是0,所以這是原始的。其餘五位全爲1,因此實際標籤從第二個字節開始。第二個字節是第一個字節,第三個字節不是,所以標記是通過取這兩個字節(二進制爲10000010 00000010),刪除它們的前導位以獲得十四位00000100000010,並將其解釋爲二進制數。因此,該標籤是十進制258。下一個字節是05,小於128,這是內容的實際長度。接下來的5個字節(12 34 56 78 90)是內容。
的第一個字節,30,是一個我們以前見過。它是通用類,結構化,標籤爲16,下一個字節爲80,所以起初的長度是未知的。內容是所有以下字節,直到(但不包括)前兩個連續的零字節。所以內容是04 03 56 78 90,並且我們可以從內容弄清楚,長度爲5
注意,有用於ASN.1幾個編碼規則。您似乎談論BER(基本編碼規則)或DER(區分編碼規則)。 – Henry
基本編碼規則@Henry –