BIT STRING

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

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

以下示例改编自 PKCS #10 编码的 ASN.1 主题,显示了示例 PKCS #10 证书请求的编码签名。 第一个字节包含 BIT STRING 数据类型的 标记 值,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 编码

编码的长度和值字节