BIT STRING

BIT STRING 数据类型编码为以标记字节0x03开头的 TLV 三元组。 TLV 三元组的 “值” 字段包含一个前导字节,该字节指定内容最后一个字节中剩余未使用的位数。 在以下示例中, “长度” 字段设置为“0x03”,因为后面跟着三个内容字节,“ ”字段的前导字节设置为“0x04,因为最后一个内容字节中有四个未使用的位。 每个未使用的位都由字母 x 表示。

位字符串数据类型的 der 编码

以下示例改编自 PKCS #10 Encoded ASN.1 主题,演示示例 PKCS #10 证书请求的编码签名。 第一个字节包含 BIT STRING 数据类型的 Tag 值,0x03。 第二个和第三个字节包含字节数组的长度。 第二个字节的第 7 位设置为 1,因为内容超过 127 字节。 第二个字节的 0 到 6 位指定尾随 长度 字节数,在本例中为 1。 第三个字节指定内容字节数,0x81。 第四个字节0x00,指定最后一个内容字节中存在的未使用位数。 请注意,签名按 big-endian 字节顺序编码。

0299:    03 81 81           ; BIT_STRING (81 Bytes)
029c:       00
029d:       47 eb 99 5a df 9e 70 0d  fb a7 31 32 c1 5f 5c 24
02ad:       c2 e0 bf c6 24 af 15 66  0e b8 6a 2e ab 2b c4 97
02bd:       1f e3 cb dc 63 a5 25 ec  c7 b4 28 61 66 36 a1 31
02cd:       1b bf dd d0 fc bf 17 94  90 1d e5 5e c7 11 5e c9
02dd:       55 9f eb a3 3e 14 c7 99  a6 cb ba a1 46 0f 39 d4
02ed:       44 c4 c8 4b 76 0e 20 5d  6d a9 34 9e d4 d5 87 42
02fd:       eb 24 26 51 14 90 b4 0f  06 5e 52 88 32 7a 95 20
030d:       a0 fd f7 e5 7d 60 dd 72  68 9b f5 7b 05 8f 6d 1e

ASN.1 类型系统

ASN.1 类型的 DER 编码

编码的长度和值字节数