OID的编解码

我们常见到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具有分层灵活、可扩展性强等特点,适合作为现有各种编码方案之间进行交换的元标识机制。

1.关于ASN.1的介绍https://www.obj-sys.com/asn1tutorial/asn1only.html

2.关于ASN.1编码的中文介绍度娘即可,英文的在https://www.itu.int/ITU-T/studygroups/com17/languages/X.690-0207.pdf。
3. BER和DER的区别https://blog.csdn.net/baidu_36649389/article/details/53538223。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

幸福在路上wellbeing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值