BER编码规则

BER编码规则BER 基本编码规则 是 ASN 1 标准制定的用于将数据编码为二进制格式的原始规则

一、BER 编码规则介绍

BER (基本编码规则) 是 ASN.1 标准制定的用于将数据编码为二进制格式的原始规则。这些规则在 ASN.1 术语中统称为传输语法,指定用于编码数据的确切八位字节(8 位字节)。

二、BER编码数据组成

BER 基本编码规则的格式指定了一种用于编码 ASN.1 数据结构的自描述和自定界格式。每个数据素都被编码为类型标识符长度描述实际数据素,以及必要时的内容结束标记。这些类型的编码通常称为类型-长度-值(TLV) 编码。但是,在 BER 的术语中,它是identifier-length-contents。这种格式允许接收者从不完整的流中解码 ASN.1 信息,而无需预先了解数据的大小、内容或语义.

Identifier octets Type Length octets Contents octets End-of-Contents octets
Type Length Value (only if indefinite form)

三、Identifier octets Type

type 被编码成一个或多个字节,主要由 标签种类tag class,数据类型P(Primitive)/C(Constructed),tag number 组成。 

结构如下:
在这里插入图片描述
第一个字节的前2位表示 tag class 第3位表示p/c,后边则是tag number

1. tag class 分类

tag class 有以下几种,它的值是用来区分 ASN.1 类型

类型 说明
universal 0 表示原始的数据类型
application 1 只适用于一个特定的应用程序类型
context-specific 3 根据上下文定义的类型
private 4 私人规范中定义的类型

2. p/c 分类

p/c 表示数据内容是基本的数据类型还是复合的数据类型。

类型 说明
Primitive § 0 数据内容仅由一个数据素组成
Constructed © 1 数据内容由多个数据素组成

3 tag type

4. ASN.1的原始数据类型(TAG)

数据类型 编码类型 Tag number(十进制) Tag number(十六进制)
End-of-Content (EOC) Primitive 0 0
BOOLEAN Primitive 1 1
INTEGER Primitive 2 2
BIT STRING Both 3 3
OCTET STRING Both 4 4
NULL Primitive 5 5
OBJECT IDENTIFIER Primitive 6 6
Object Descriptor Both 7 7
EXTERNAL Constructed 8 8
REAL (float) Primitive 9 9
ENUMERATED Primitive 10 A
EMBEDDED PDV Constructed 11 B
UTF8String Both 12 C
RELATIVE-OID Primitive 13 D
TIME Primitive 14 E
Reserved 15 F
SEQUENCE and SEQUENCE OF Constructed 16 10
SET and SET OF Constructed 17 11
NumericString Both 18 12
PrintableString Both 19 13
T61String Both 20 14
VideotexString Both 21 15
IA5String Both 22 16
UTCTime Both 23 17
GeneralizedTime Both 24 18
GraphicString Both 25 19
VisibleString Both 26 1A
GeneralString Both 27 1B
UniversalString Both 28 1C
CHARACTER STRING Constructed 29 1D
BMPString Both 30 1E
DATE Primitive 31 1F
TIME-OF-DAY Primitive 32 20
DATE-TIME Primitive 33 21
DURATION Primitive 34 22
OID-IRI Primitive 35 23
RELATIVE-OID-IRI Primitive 36 24

四、 Length octets

Length字段标识 value字段编码 的字节数,分为定长和不定长。其中定长的length指的是长度不超过 127 的短格式和长度超过 127 字节的长格式。
在这里插入图片描述

1、定长的短格式

2、不定长格式

3、保留格式

五、Contents octets

value 是数据内容的字节编码,如果不存在或者是虚对象的时候可能没有,比如value是NULL

六 、BER编码番外

  1. CER 和DER 都是BER的一种变体,他们从基本编码规则允许的编码中选择一种编码,消除了其余选项。
  2. X.690
    X.690 是一个ITU-T(https://en.wikipedia.org/wiki/ITU-T)标准,指定了几种编码规则,主要是(BER, CER, DER )
今天的文章 BER编码规则分享到此就结束了,感谢您的阅读。
编程小号
上一篇 2025-01-01 21:30
下一篇 2025-01-01 21:27

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/bian-cheng-ji-chu/98471.html