BER编码的Identifier octets

news2024/12/22 22:49:40

在了解DLMS/COSEM应用层协议的时候有必要了解一下ASN.1BERA-XDR

这里只对部分做记录。

参考资料:ASN.1、BER和DER的PKCS相关子集入门介绍_golang asn1-CSDN博客

1、介绍

抽象语法表示法一(ASN.1)、基本编码规则(BER)和区别编码规则(DER)

ASN.1(Abstract Syntax Notation One)是一种用于描述数据结构的标准化语法。它的主要目的是提供一种平台和语言独立的数据表示方法,使得不同系统之间能够理解和交换数据。

BER(Basic Encoding Rules)是ASN.1数据的编码规则之一。它定义了如何将ASN.1定义的数据结构转换为二进制格式,以便在网络上传输或存储。

A-XDR(Abstract External Data Representation)是XDR(External Data Representation)的一个增强版本。XDR是一种用于描述数据的编码标准,主要用于在不同系统之间交换数据时进行编码和解码。

DER(Distinguished Encoding Rules)是ASN.1(抽象语法表示法第1版)数据编码的一个子集,属于一种确定性编码规则。它是BER(基本编码规则)的一个简化和规范化版本,主要用于需要精确和唯一编码的数据场景,如安全协议和证书。

2、ASN.1

ASN.1 has four kinds of type:

simple type、structured types、tagged types、other types

There are four classes of tag

university、application、private、context-specific

Some types and their universal-class tags

3、BER

There are three methods to encode an ASN.1 value under BER, the choice of which
depends on the type of value and whether the length of the value is known.
 

primitive, definite-length encoding;原始的定长的编码方法;

constructed, definite-length encoding;结构化的定长的编码方法;
constructed, indefinite-length encoding。结构化的非定长的编码方法。

在每种方法中,BER编码三个或者四个部分:

标识符八位组(Identifier octets):这部分区分ASN.1值的类别和标签号码(class and tag number),并指示使用的编码方法是原始的还是结构化的。

长度八位组(Length octets):

对于定长编码方法,这部分给出内容八位组(content octets)的字节数量;

对于结构化非定长编码方法,这部分用于指示内容八位组的字节数量是不确定的。

内容八位组(Content octets):

对于原始的定长编码方法,这给出值的一个实质表示;

对于结构化的编码方法,这给出其组件值的BER编码值的一个串联结果。

结束标志八位组(End-of-content octets):对于结构化的非定长的方法,这部分知识内容字段的结束。对于其他的编码方法,这个字段是不存在的。

2.1Identifier octets

1. 标识符八位字节分为两种形式:低标签号形式(标签号在0到30之间)和高标签号形式(标签号为31及以上)。

2. 低标签号形式使用一个八位字节,其中第8和第7位指定类别(见表2),第6位值为"0"表示编码为原始类型,第5至第1位给出标签号。

3. 类别编码在标识符八位字节中的表示如下:通用类别为00,应用类别为01,上下文特定类别为10,私有类别为11。

4. 高标签号形式使用两个或更多的八位字节,第一个八位字节与低标签号形式相同,但第5至第1位的值均为"1"。

5. 第二个及后续的八位字节以128为基数给出标签号,最高有效数字先出现,尽可能少的数字,并且除了最后一个八位字节外,每个八位字节的第8位都设置为"1"。

3.2 length octets

原文介绍:

3.3contents octets

这些都给出了值的具体表示(或者底层类型的值,则该类型是通 过隐式标记派生的)。特定类型的详细信息见第5节。

4、DER

1. ASN.1的Distinguished Encoding Rules(DER)是Basic Encoding Rules(BER)的一个子集,它为任何ASN.1值提供了一种唯一的八位字节字符串表示方法。
2. DER适用于需要唯一八位字节编码的应用场景,例如在计算ASN.1值的数字签名时。
3. DER在X.509标准的第8.7节中定义,它对长度表示添加了特定的限制:长度在0到127之间时,必须使用短形式;长度为128或更大时,必须使用长形式,并且长度必须用最少的八位字节表示。
4. 对于简单字符串类型和从简单字符串类型派生的隐式标记类型,必须使用原始的、确定长度的方法。
5. 对于结构化类型、从结构化类型派生的隐式标记类型以及从任何类型派生的显式标记类型,必须使用构造的、确定长度的方法。特定类型的其他限制(如BIT STRING、SEQUENCE、SET和SET OF)可以在标准的第5节中找到。

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

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

相关文章

工厂现场多功能帮手,三防平板改善管理体验

随着制造业的智能化变革,信息化、自动化和智能化逐渐成为工厂管理的新常态。在这一波技术浪潮中,三防平板作为一种多功能的工作工具,正在逐步改善工厂现场的管理体验。 一、三防平板的定义与特点 三防平板,顾名思义,是…

一篇文章讲清楚Zotero所有实用插件

主要介绍常用的zotero基础高使用&高实用插件及功能展示。 zotero7更新链接:链接 目录 插件表一览插件列表插件效果展示actions and Tags for Zotero插件说明插件设置Awesome GPTBetter Notes for zoteroCrush ReferenceEasier CitationEthereal Stylejasminum…

谢谢微软,又又又Open了!一口气发布3款Phi-3.5新模型,领先Llama3.1和谷歌同级模型

家人们!微软又用爱发电了!一觉醒来,微软发布了最新的小模型三兄弟: Phi-3.5-MoE-instruct Phi-3.5-mini-instruct Phi-3.5-vision-instruct 三兄弟的表现可以说是相当的不错,其中,Phi-3.5-MoE 在基准测…

【NVM-下载、安装、使用】

前置条件 已经安装node,需要卸载node # 查看是否安装nodejs,展示版本则是已安装 node -v 在控制面板中卸载nodejs 删除nodejs安装目录 删除.npmrc配置文件(不知道在什么位置可以直接搜索.npmrc) 查看是否删除成功 node -v 提示【不是内部或外部命令&…

代码随想录-暑假算法第六天(贪心算法篇)(记得要回看,还有一些不怎么理解)

代码随想录-暑假算法第六天(贪心算法篇)(要回看) 题目分类大纲如下: #什么是贪心 贪心的本质是选择每一阶段的局部最优,从而达到全局最优。 这么说有点抽象,来举一个例子: 例如,有一堆钞票,你可以拿走十…

vue3使用elementui-plus时使用深度选择器穿透影响原样式

一、原样式: 下拉框选择时,右边存在一个下拉的箭头符号,那么在许多场景下我们不需要显示,这个时候就可以通过开发者工具进行定位,选中该元素,可以看到,影响的样式是:.el-icon svg 二…

Aigtek功率放大器的基本参数包括什么

功率放大器是一种用于增大输入信号功率的设备,常用于音频设备、通信设备和电子设备等领域。其基本参数包括增益、带宽、输出功率、频率响应、失真、输入灵敏度、输出阻抗等多个方面。下面将对这些参数进行详细介绍。 增益:增益是功率放大器的核心参数&am…

《黑神话:悟空》这家公司的薪资水平

黑神话: 悟空 黑神话:悟空(简称黑猴)彻底火了,宣发的四年里,光 B 站就发了 12 个预告类视频,合计播放量超 2 亿。 与那些氪金手游不同,单机游戏可不折不扣地称为「第九艺术」。 黑猴作为中国在该…

Vue条件判断指令:v-if、v-else、v-else-if、v-show 指令

在程序设计中,条件判断是必不可少的技术。在视图中,经常需要通过条件判断来控制 DOM 的显示状态。Vue.js 提供了相应的指令用于实现条件判断,包括:v-if、v-else、v-else-if、v-show 指令。 1、v-if 指令 v-if 指令可以根据表达式…

fastadmin 控制器的权限管理

1、fastadmin 权限管理,需要用到的属性和方法是这几个: /*** 无需登录的方法,同时也就不需要鉴权了* var array*/ protected $noNeedLogin [];/*** 无需鉴权的方法,但需要登录* var array*/ protected $noNeedRight []; /*** 是否开启数据限制* 支持a…

双通道SP3232芯片实现由TTL电平转RS232电平

首先,单片机的串口必须经过电平转换才可以和标准RS-232通信,这个转换芯片5V的一般是MAX232或SP232,3.3V的一般是MAX3232或SP3232。 严格说,SP有3232和SP232两种,前者宽电,后者只支持5V。 SP3232是一款RS-…

适合金融行业的企业级跨网文件交换系统

在金融领域,文件交换平台的作用不可小觑,它关乎数据的保密性、稳定性,并且必须遵守严格的合规标准。那么,一个适合金融业跨网文件交换的系统应该具备哪些特质,又是如何满足这些需求的呢?镭速跨网文件交换系…

计算商品总价

价格等于单价乘于数量 如果商品数量大于100,会享受10%的折扣;50-100之间会享受5%的折扣;小于50没有折扣 def getAmount(num,price):amountnum*priceif num>100:amountamount*0.9elif num>50:amountamount*0.95else:amountamountreturn …

应用界面设计(原生,自定义控件,设计与交互-小白必看)

目录 一图概览 界面实现方式 XML布局方式 JAVA或Kotlin代码布局 Android定制控件 Android原生核心控件 为什么不用原生? 定制控件三大方法 定制控件流程 触摸事件(input事件处理)流程 分发 (dispatchTouchEvent) 拦截 (onInterce…

【信创】Linux系统上ext4、XFS等文件系统的特点和适用场景 _ 统信 _ 麒麟 _ 方德

原文链接:【信创】Linux系统上ext4、XFS等文件系统的特点和适用场景 | 统信 | 麒麟 | 方德 Hello,大家好啊!今天给大家带来一篇关于Linux系统上常见文件系统——如ext4、XFS等——的特点和适用场景的文章。选择合适的文件系统对于优化存储性能…

sh脚本之外JS也可以编写脚本

比方说APP每次打包后命名无规则 打得多了还杂乱 可以使用node脚本 批量删除 重命名 例如使用以下 Node.js 脚本来删除当前目录下的所有文件,并保留最近修改的一个文件名为lock.apk const fs require(fs); const path require(path);// 获取当前目录 const curre…

ZYNQ 7020 学习记录-1点灯

系列文章目录 1.点灯 文章目录 系列文章目录前言一、ZYNQ是什么?二、FPGA开发流程1.流程图2.工程管理3.需求分析4.系统框图5.编写RTL代码6.Modelsim 手动仿真7.Vivado工程 总结 前言 由于研究生课题组所研制的设备HIGH-POWER SHM SYSTEM是基于ZYNQ的,以…

【css】伪元素实现图片个悬停文字聚焦效果

实现重点: 文字覆盖在图片上: 通过使用 position: absolute 将 .box 文字盒子定位在图片上方。父容器 .img-wrap 使用了 position: relative 确保子元素的绝对定位在父容器的边界内生效。 创建悬停效果: 通过使用 &::before 和 &::…

滑块缺口研究实例(C#颜色滑块缺口计算)

缺口图图 测试网站 111https://www.591mf.top/duibi/hk.html using System; using System.Drawing;public class ColorGapCounter {public static int CountGaps(Color startColor, Color endColor, int threshold){int gaps 0;int startR startColor.R;int startG startC…

STM32按键控制小灯—HAL库

原理讲解: 以上是按键的原理图:(忽略GPIO口,因为可以自行设置) 需要注意的点有两个: ①100nF的电容:有效缓冲抖动的电平信号,有按键消抖的作用 什么是按键抖动呢?&am…