• 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。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    如果比较懒,可以在线解码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。

  • 相关阅读:
    跨境电商运营的新趋势:自养号测评补单技术解析
    矩阵连乘问题(区间DP)
    ensp中查看带宽信息
    分享如何开发南非市场
    C++中的四种类型转换运算符
    01 【TailWind CSS 安装使用】
    《从零开始的Java世界》03面向对象(进阶)
    设计模式-适配器模式
    【EI会议征稿】第七届大数据与应用统计国际学术研讨会(ISBDAS 2024)
    QT With OpenGL(延时着色法)(Deferred Shading)
  • 原文地址:https://blog.csdn.net/xingfuyusheng/article/details/133394884