BER编码规则

文章目录

  • 一、BER 编码规则介绍
  • 二、BER编码数据组成
  • 三、Identifier octets Type
    • 1. tag class 分类
    • 2. p/c 分类
    • 3 tag type
    • 4. ASN.1的原始数据类型(TAG)
  • 四、 Length octets
    • 1、定长的短格式
    • 2、不定长格式
    • 3、保留格式
  • 五、Contents octets
  • 六 、BER编码番外

一、BER 编码规则介绍

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

二、BER编码数据组成

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

Identifier octets TypeLength octetsContents octetsEnd-of-Contents octets
TypeLengthValue(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 类型

类型说明
universal0表示原始的数据类型
application1只适用于一个特定的应用程序类型
context-specific3根据上下文定义的类型
private4私人规范中定义的类型

2. p/c 分类

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

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

3 tag type

tag type 数据的标识,是固定的。在asn.1的原始数据类型表里可以看到。
如果定义的数据类型不是 Universal 的数据类型,那么此时需要用到更多的字节序列如 Octet2。在使用这类标记的时候,要将 Octet1 的第 5 到第 1 个二进制位置为 1 ,如果 Octet2 后面还有 Octet3,那么 Octet2 的第 8 个二进制位应该为 1。

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

数据类型编码类型Tag number(十进制)Tag number(十六进制)
End-of-Content (EOC)Primitive00
BOOLEANPrimitive11
INTEGERPrimitive22
BIT STRINGBoth33
OCTET STRINGBoth44
NULLPrimitive55
OBJECT IDENTIFIERPrimitive66
Object DescriptorBoth77
EXTERNALConstructed88
REAL (float)Primitive99
ENUMERATEDPrimitive10A
EMBEDDED PDVConstructed11B
UTF8StringBoth12C
RELATIVE-OIDPrimitive13D
TIMEPrimitive14E
Reserved15F
SEQUENCE and SEQUENCE OFConstructed1610
SET and SET OFConstructed1711
NumericStringBoth1812
PrintableStringBoth1913
T61StringBoth2014
VideotexStringBoth2115
IA5StringBoth2216
UTCTimeBoth2317
GeneralizedTimeBoth2418
GraphicStringBoth2519
VisibleStringBoth261A
GeneralStringBoth271B
UniversalStringBoth281C
CHARACTER STRINGConstructed291D
BMPStringBoth301E
DATEPrimitive311F
TIME-OF-DAYPrimitive3220
DATE-TIMEPrimitive3321
DURATIONPrimitive3422
OID-IRIPrimitive3523
RELATIVE-OID-IRIPrimitive3624

四、 Length octets

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

1、定长的短格式

a、前面的第一位是0,后边的7个位代表长度,因为7个位的2进制是0111 1111,最大也就是127,所以要求短格式不能超过127
b、定长长格式:最高位是1,后面的7个位表示长度值占用的字节数,然后跟上长度值。

例如长度为300,转换成2进制是0000 0001 0010 1100,占用2个字节,那么编码后应该是
1 000 0010 0000 0001 0010 1100 总共占用3个字节,用16进制表示 0x82 0x01 0x2c

2、不定长格式

根据图上看到最高位为1,后边7个位全是0,那就是1000 0000 也就是0x80 固定的数值
在value结尾处标记2个0x00代表内容结束,因为是不定长,必须知道内容在网络上传输时读到啥时候结束。

3、保留格式

最高位为1,后边7个为全是1,0xFF表示
同时在数据内容结尾处用2个0x00标记,代表着内容结束。

五、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 )

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/170444.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【数据库篇】关系模式的表示——(2)规范化

范式:范式是符合某一种级别的关系模式的集合 规范化:是指一个低一级的范式的关系模式,通过模式的分解转换为若干个高一级范式的关系模式的集合。 1NF 每个分量必须是不可分开的数据项,满足这个条件的关系模式就是1NF。 2NF 若…

信息检索指标直接优化的通用近似框架

1、直接优化信息检索指标的背景 1.1、存在问题 直接优化信息检索的指标是信息检索的一大方向。主要包含两类方法,一类是将IR指标作为上界进行优化;另一类是使用平滑函数近似表示IR指标进行优化。 直接优化IR指标方式很自然,但没有提供理论…

【Unity】接入MAX聚合广告SDK Applovin + GoogleAdmob

版本: Unity:2019.4.35f1gradle plugin: 4.2.0 (实际要7.0 对应build_tools:34.0.0) gradle: 6.7.1 (实际要7.0 对应build_tools:34.0.0) jdk: 1.8.0_241build_tools: 34.0.0 ndk: android-ndk-r19 文档: 6.0.1(Andro…

基于springboot+Web实现社区医院管理服务系统项目【项目源码+论文说明】计算机毕业设计

基于springbootWeb实现社区医院管理服务系统演示 摘要 在Internet高速发展的今天,我们生活的各个领域都涉及到计算机的应用,其中包括社区医院管理服务系统的网络应用,在外国线上管理系统已经是很普遍的方式,不过国内的管理系统可…

Redis分片集群

文章目录 Redis分片集群搭建分片集群散列插槽插槽原理小结 集群伸缩需求分析创建新的redis实例添加新节点到redis转移插槽 故障转移自动故障转移手动故障转移 RedisTemplate访问分片集群 Redis分片集群 搭建分片集群 主从和哨兵可以解决高可用、高并发读的问题。但是依然有两…

KT404A远程更换语音芯片方案支持OTA 4G 蓝牙 wifi 物联网

目录 一、简介 2.1 芯片的硬件 2.2 测试的方法 一、简介 KT404A远程更换语音芯片方案支持OTA 4G 蓝牙 wifi 物联网 在线下载的mp3语音芯片ic,通过KT404A的uart直接更换内部的语音文件,从而实现动态的更新语音内容 物联网大潮的来袭。随着智能家居、…

3.2 CPU的自动化

CPU的自动化 改造1-使用2进制导线改造2根据整体流程开始改造指令分析指令MOV_A的开关2进制表格手动时钟gif自动时钟gif 根据之前的CPU内部结构改造,制造一个cpu控制单元 改造一 之前的CPU全由手动开关自己控制,极度繁琐,而开关能跟二进制一一对应, 开:1, 关:0图1是之前的, …

【网络】DNS协议、ICMP协议、NAT技术

DNS协议、ICMP协议、NAT技术 一、DNS协议1、产生背景2、域名简介3、域名解析的工作流程4、使用dig工具分析DNS过程 二、ICMP协议1、ICMP介绍2、ICMP协议格式3、ping命令4、traceroute命令 三、NAT技术1、NAT技术背景2、NAT IP转换过程3、地址转换表4、NAPT技术5、重新理解路由器…

2023年亚太杯数学建模A题——深度学习苹果图像识别(思路+模型+代码+成品)

Image Recognition for Fruit-Picking Robots 水果采摘机器人的图像识别功能 问题 1:计数苹果 根据附件 1 中提供的可收获苹果的图像数据集,提取图像特征,建立数学模型,计算每幅图像中的苹果数量,并绘制附件 1 中所有…

佳易王各行业收银管理系统软件,企业ERP管理软件,企业或个体定制开发软件以及软件教程资源下载总目录,持续更新,可关注收藏查阅

系统简介 1、佳易王软件功能实用、操作简单、软件绿色免安装,解压即可使用,软件已经内置数据库,不需再安装其他数据库文件。 2、佳易王软件,已经形成系列,上百款管理系统软件涵盖多个行业。 3、已为多个企业个体定制…

在 Go 中使用 Protocol Buffers

各位准备好了吗!这一次,我们将深入探讨 Protocol Buffers(protobuf)及其在数据序列化中的超能力所在。 介绍 Protocol Buffers,也被称为 protobuf,是由谷歌开发的一种语言无关的二进制序列化格式。其主要…

MySQL日期函数sysdate()与now()的区别,获取当前时间,日期相关函数

select sleep(2) as datetime union all select sysdate() -- sysdate() 返回的时间是当前的系统时间,而 now() 返回的是当前的会话时间。 union all select now() -- 等价于 localtime,localtime(),localtimestamp,localtimestamp(),current_timestamp,curre…

PyTorch-ReID重识别算法库与数据集资料汇总

Torchreid 是一个用于深度学习人员重新识别的库,用 PyTorch 编写,为我们的 ICCV’19 项目 Omni-Scale Feature Learning for Person Re-Identification 开发。 PyTorch-ReID的特点是 多GPU训练支持图像和视频 REID端到端培训和评估极其轻松地准备 Rei…

图书管理系统源码,图书管理系统开发,图书借阅系统源码三框架设计原理和说明

TuShuManger项目简介和创建 这里一共设计了6个项目,主要是借助三层架构思想分别设计了主要的三层,包括model实体层,Dal数据库操作层,Bll业务调用层,其他有公共使用项目common层,DButitly提取出来的数据库访问层,下面我们分别创建每个项目和开始搭建整个过程 TuShuManger…

nodejs+vue+python+PHP+微信小程序-书吧租阅管理系统的设计与实现-安卓-计算机毕业设计

在当今高度发达的信息中,信息管理改革已成为一种更加广泛和全面的趋势。为确保中国经济的持续发展,信息时代日益更新,书吧租阅管理系统仍在蓬勃发展。同时,随着信息社会的快速发展,各种管理系统面临着越来越多的数据需…

柑橘病害数据集(四类图像分类,没有打yolo标签)

1.文件夹分为训练集和测试集 在这个数据集中,有一类是新鲜柑橘,还有另外三种疾病,溃疡病、黑斑病和绿化病。 2.train文件夹 2.1.blackspot(黑斑病) 文件夹 206张照片 2.2.canker(溃疡病) 文…

STM32 配置中断常用库函数

单片机学习 目录 一、配置AFIO相关库函数 1.1函数GPIO_AFIODeInit 1.2函数GPIO_EventOutputConfig 1.3函数GPIO_EventOutputCmd 1.4函数GPIO_EXTILineConfig 二、配置EXTI相关库函数 2.1函数EXTI_DeInit 2.2函数EXTI_Init 2.3函数EXTI_StructInit 2.4函数 EXTI_Gener…

超越噪音,让音乐重获新生:iZotope RX 10音频降噪修复软件

在音乐制作或者音频处理的过程中,噪音往往是一个让人头痛的问题。无论是环境噪音,还是设备产生的噪音,都会对音频质量产生重大影响。而现在,我们有了iZotope RX 10,这款专业的音频降噪修复软件,可以将你从噪…

C# 使用NPOI操作Excel的工具类

写在前面 NPOI是POI项目的.NET迁移版本。POI是一个开源的Java 读写 Excel、Word 等微软Ole2组件文档的项目;使用NPOI可以在没有安装Office或者相应环境的机器上对Word或Excel文档进行读写操作。 NPOI类库中操作EXCEL有两个模块分别是: 1️.HSSF模块&a…

【UCAS自然语言处理作业二】训练FFN, RNN, Attention机制的语言模型,并计算测试集上的PPL

文章目录 前言前馈神经网络数据组织Dataset网络结构训练超参设置 RNN数据组织&Dataset网络结构训练超参设置 注意力网络数据组织&Dataset网络结构Attention部分完整模型 训练部分超参设置 结果与分析训练集Loss测试集PPL 前言 本次实验主要针对前馈神经网络&#xff0…