先上干货:

我们常见到OID的地方是SNMP和MIB,实际上理论上所有对象都可以有自己的ID。已存在的ID可以在http://www.oid-info.com/查到。这些ID在报文里并非字符串或直接的文本而是遵循的规则可以在https://docs.microsoft.com/zh-cn/windows/desktop/SecCertEnroll/about-object-identifier查到,但这个好像没有中文,我来通俗化的解释下:

1. 整体OID是TLV的方式,以06标识开始,首先是一个字节表示长度,如09表示该OID由下面9个字节表示;

2. 前两个字节(如为X和Y)被编码为一个字节40*X+Y,如1和2,编码的结果为40*1+2=42,也就是2a。

3. 后面的数字若不超过127(即7个位可以表示的范围),则直接为1个字节表示,如04即表示4;若超过128,则使用多个字节表示,不管是2个字节、3个字节或是多个字节,最左边字节的最高位为1,如130的编码是0x81、0x02(1*128+2),840的编码是0x86、0x48(6*128+72)。

4.举个整体的例子:sha256WithRSAEncryption的OID是1.2.840.113549.1.1.11的编码是06 09 2a 86 48 86 f7 0d 01 01 0b。

如果比较懒,可以在线解码http://lapo.it/asn1js/:06开头,然后是长度,然后是编码,如上述4里的例子,可以直接贴到链接里进行解码。

来自百度的解释:对象标识符(Object identifier, OID)又称为物联网域名是由ISO/IEC、ITU国际标准组织共同提出的标识机制,用于对任何类型的对象、概念或者“事物”进行全球无歧义、唯一命名。一旦命名,该名称终生有效。由于OID具有分层灵活、可扩展性强等特点,适合作为现有各种编码方案之间进行交换的元标识机制。

OID的编解码(即在报文中的体现)的更多相关文章

  1. 音视频编解码: YUV采样格式中的YUV444,YUV422,YUV420理解

    YUV各种采样格式的说明 通常我们用RGB表示一种彩色.计算机系统里的LCD显示的数据就是RGB来表示每个像素的颜色.而在我们生活里,有黑白电视机与彩色电视机两种,拍摄节目源时不可以用两种不同的摄像机 ...

  2. Base64编解码Android和ios的例子,补充JNI中的例子

    1.在Android中java层提供了工具类:android.util.Base64; 里面都是静态方法,方便直接使用: 使用方法如下: // Base64 编码: byte [] encode =  ...

  3. Java Web中涉及的编解码

    用户从浏览器发起一个HTTP请求,存在编码的地方是URL.Cookie.Paramiter.服务器端接收到HTTP请求后要解析HTTP协议,其中URL.Cookie和POST表单参数要解码,服务器端可 ...

  4. Go语言标准库之JSON编解码

    Go语言标准库之JSON编解码 基本的类型 Go语言中的数据类型和JSON的数据类型的关系 bool -> JSON boolean float64 -> JSON numbers str ...

  5. 【H.264/AVC视频编解码技术具体解释】十三、熵编码算法(4):H.264使用CAVLC解析宏块的残差数据

    <H.264/AVC视频编解码技术具体解释>视频教程已经在"CSDN学院"上线,视频中详述了H.264的背景.标准协议和实现,并通过一个实战project的形式对H.2 ...

  6. 小白袍 -- Chapter 1.1 避不开的编解码

    1.1  避不开的编解码 能阅读本文的想开都是从事计算机开发工作的,那么弱弱的问自己一下,有没有受到过编码的纠缠呢?有没有动过心思,如果没有编码该多好? 1.1.1  这个翻译你得捏着鼻子用 要想说明 ...

  7. netty权威指南学习笔记六——编解码技术之MessagePack

    编解码技术主要应用在网络传输中,将对象比如BOJO进行编解码以利于网络中进行传输.平常我们也会将编解码说成是序列化/反序列化 定义:当进行远程跨进程服务调用时,需要把被传输的java对象编码为字节数组 ...

  8. RTCM32编解码中的一些概念及相关文献阅读

    1. IODC和 IODE ——  导航电文相关.iode/iodc是在GPS系统的ICD2中定义的参数,iode指星历数据事件,iodc指星钟数据事件. IOD 是 issue of data ,数 ...

  9. JAVA WEB 中涉及的编解码

    1.对URL解码 1)URI部分解码:<Connector URIEncoding="UTF-8" /> 2)QueryString解码要么是 Header 中 Con ...

随机推荐

  1. mysql 开发进阶篇系列 2 SQL优化(explain分析)

    接着上一篇sql优化来说 1. 定位执行效率较低的sql 语句 通过两种方式可以定位出效率较低的sql 语句. (1) 通过上篇讲的慢日志定位,在mysqld里写一个包含所有执行时间超过 long_q ...

  2. 数据结构(一) 单链表的实现-JAVA

    数据结构还是很重要的,就算不是那种很牛逼的,但起码得知道基础的东西,这一系列就算是复习一下以前学过的数据结构和填补自己在这一块的知识的空缺.加油.珍惜校园中自由学习的时光.按照链表.栈.队列.排序.数 ...

  3. Ajax 上传input type file 文件

    Html: <div class="attach-img"> <label><input type="file" id=" ...

  4. Perl检查引用类型

    有时候可能会需要检查引用是什么类型的,免得我们期待是一个数组引用,却给了一个hash引用. ref函数可以用来检查引用的类型,并返回类型.perl中内置了如下几种引用类型,如果检查的不是引用,则返回u ...

  5. Perl回调函数和闭包

    在Perl中,子程序的引用常用来做回调函数(callback).闭包(closure),特别是匿名子程序. 回调函数(callback) 关于什么是回调函数,见一文搞懂:词法作用域.动态作用域.回调函 ...

  6. python装饰器2:类装饰器

    装饰器1:函数装饰器 装饰器2:类装饰器 装饰器3:进阶 本文是装饰器相关内容的第二篇,关于类装饰器. "类装饰器"有两种解读方式:用来装饰类的装饰器:类作为装饰器装饰其它东西.你 ...

  7. 用python实现红包机制

    方法一,逻辑是后一个红包的范围是[0.01,剩下的钱*2/剩下的红包数,如果最后钱不足分配给每个人,就把后几个每人分配0.01元. 主要思想就是,每个人至少能领取到0.01元. import rand ...

  8. [转]PHP开发者必须了解的工具—Composer

    本文转自:https://blog.csdn.net/Zhihua_W/article/details/80345973 Composer是PHP 用来管理依赖(dependency)关系的工具.你可 ...

  9. Spring Boot 设置静态资源访问

    问题描述 当使用spring Boot来架设服务系统时,有时候也需要用到前端页面,当然就不可或缺地需要访问其他一些静态资源,比如图片.css.js等文件.那么如何设置Spring Boot网站可以访问 ...

  10. fiddle使用小结

    1:保存发出的请求:右键Save,找到selected Sessions 选择 in ArchiveZip 2:更改header 重新发送请求:右键 Unlock For Editing 然后修改He ...