共用方式為


INTEGER (憑證註冊 API)

整數值會編碼為 TLV 三元,其開頭為 Tag 值0x02。 TLV 三元組的 Value 字段包含編碼的整數,如果它是正整數,則為負數,則為兩者的補碼。 如果整數為正數,但高序位設定為 1,則會將前置0x00新增至內容,表示數位不是負數。 例如,0x8F (10001111) 的高階位元組為1。 因此,前置零位元組會新增至內容,如下圖所示。

布爾數據類型的 der 編碼

如果整數包含少於 128 個字節,Length 欄位只需要一個字節才能指定內容長度。 如果整數超過 127 個字節,Length 欄位元 7 會設定為 1,而位 6 到 0 則指定用來識別內容長度的額外位元組數目。 如需詳細資訊,請參閱 編碼長度和值位元組

下列範例會從 PKCS #10 編碼 ASN.1顯示 128 位元組公鑰的編碼方式。 第一個字節包含 INTEGER 數據類型的 Tag 值, 0x02。 第二個和第三個字節包含 Length 值。 第二個字節的位 7 會設定為 1,因為內容超過 127 個字節。 第二個字節的 0 到 6 位指定需要尾端位元組的數目,在此案例中為 1,以正確指定內容長度。 第三個字節會指定內容位元組數目,0x81。 第四個字節0x00會新增至內容,表示整數確實是正值,即使前置內容位元組的正數位 (0x8F) 設定為1。

02 81 81          ; INTEGER (81 Bytes)
|  00
|  8f e2 41 2a 08 e8 51 a8  8c b3 e8 53 e7 d5 49 50
|  b3 27 8a 2b cb ea b5 42  73 ea 02 57 cc 65 33 ee
|  88 20 61 a1 17 56 c1 24  18 e3 a8 08 d3 be d9 31
|  f3 37 0b 94 b8 cc 43 08  0b 70 24 f7 9c b1 8d 5d
|  d6 6d 82 d0 54 09 84 f8  9f 97 01 75 05 9c 89 d4
|  d5 c9 1e c9 13 d7 2a 6b  30 91 19 d6 d4 42 e0 c4
|  9d 7c 92 71 e1 b2 2f 5c  8d ee f0 f1 17 1e d2 5f
|  31 5b b1 9c bc 20 55 bf  3a 37 42 45 75 dc 90 65

下列範例示範如何編碼整數值0x03。 標記 位元組包含0x02,而 長度 位元組指定有一個字節的內容。

02 01             ; INTEGER (1 Bytes)
|  03

ASN.1 類型系統

ASN.1 類型的 DER 編碼