解析 ASN1 0x80 问题

所有X509证书都用一种 ASN1 格式,其为一种嵌套储存格式。ASN1 规则繁琐,此文不说明,可以研究此链接。
本文主要说明 0x80 问题,同事问起这问题,一时想不起来,现在在此备份。

所有ASN1格式都是0x30开头,表示ASN1 tag0x82用来表示03 C2的长度,先搁置;而 03 C2 其用来表示后面数据长度,如下所示。

30 82 03 C2 <...>

所以 ASN1格式简单分为如下两种:

  • tag, data
  • len, data

再重新解析

tag  data <..........................>
30 82 03 C2 <........................>

03 C2 是表示后面数据长度,而其为两个字符。需要标明它为两个字符,所以前面使用0x82

<len....> <data.....>
82 03 C2  <...>

有个疑问,为何不使用0x02,表示长度。我们改写为如下:

30 02 03 C2 <........................>

那会变如何解析。

- 0x30开头,表示`ASN1 tag`
- 没说明数据长度,所以0x02为0x30的数据。
- 0x03又被当为tag,0xC2为其数据

结论

  • 如果长度为两个字符以上,需要加上长度的长度
  • 长度的长度需要OR 0x80,如0x7F | 0x80 = 0xF9
  • 最大支持0x7F (127),因为ASN1解析会把0x80以上当长度的长度

解析 ASN1格式0x80 问题相关推荐

  1. urlparse模块(专门用来解析URL格式)

    # -*- coding: utf-8 -*- #python 27 #xiaodeng #urlparse模块(专门用来解析URL格式)#URL格式: #protocol ://hostname[: ...

  2. php获得帮助类数据_PHP解析xml格式数据工具类示例

    本文实例讲述了PHP解析xml格式数据工具类.分享给大家供大家参考,具体如下: class ome_xml { /** * xml资源 * * @var resource * @see xml_par ...

  3. python中json模块_Python使用内置json模块解析json格式数据的方法

    本文实例讲述了Python使用内置json模块解析json格式数据的方法.分享给大家供大家参考,具体如下: Python中解析json字符串非常简单,直接用内置的json模块就可以,不需要安装额外的模 ...

  4. XML系列之--解析电文格式的XML(二)

    上一节介绍了XML的结构以及如何创建.讲到了XML可作为一种简单文本存储数据,把数据存储起来,以XML的方式进行传递.当接收到XML时,必不可少的就是对其进行解析,捞取有效数据,或者将第三方数据以节点 ...

  5. java jdom格式_Java全面解析XML格式串(JDOM解析)

    搜索热词 Java全面解析XML格式串(JDOM解析) import java.io.IOException; import java.io.StringReader; import java.uti ...

  6. QT解析 JSON 格式的数据

    QT解析 JSON 格式的数据 JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.JSON 采用完全独立于语言的文本格式,这些特性使 JSON 成为理想的数 ...

  7. javascript解析json格式的字符串,拼接后显示到表格中

    知识点 解析json格式的字符串 拼接的HTML设置到tbody当中 加载json格式的对象 结果演示 html代码 <!DOCTYPE html> <html><hea ...

  8. 【pnglib】解析png格式的图像

    解析png格式的图像 前言 鉴于有人收藏我07年写的博客,是关于解析png格式图像的那一篇.所以我打算再写一篇防止坑你们-- 1.图像的内存表示 反复说到计算机中只有二进制表示,那图像如何以二进制表示 ...

  9. C#深入解析Json格式内容

    继上一篇<浅谈C#手动解析Json格式内容>我又来分析加入了一些功能让 这个解析类更实用 本章节最会开放我最终制作成功的Anonymous.Json.dll这个解析库 需要的拿走~ 功能继 ...

最新文章

  1. iOS App上架流程(2016详细版)
  2. C++ 在派生类中使用using声明改变基类成员的可访问性
  3. React开发(284):注意点击事件大小写
  4. 【HDU5299】Circles Game,圆的扫描线+树上删边游戏
  5. mysql libc.so.6_解决安装mysql动态库libstdc++.so.6、libc.so.6版本过低问题
  6. 【BP数据预测】基于matlab狼群算法优化BP神经网络数据预测【含Matlab源码 658期】
  7. 仿微信拼多多实训笔记
  8. 图书借阅系统软件测试实验报告,C 大作业--图书管理系统-实验报告.doc
  9. 服务器销售年终总结ppt模板,it运维工作总结ppt模板
  10. python中abbab什么意思_ABtest与Python代码-Go语言中文社区
  11. 一看就懂的保姆级教程:open vn设置 (亲测通过)
  12. ADB命令使用大全及使用原理
  13. golang中base64编码_golang中base64编码和解码
  14. 二维码(生成以及扫一扫)
  15. 为何vSAN需要至少2n+1台主机,来防止n台主机出现故障(FTT=n)?
  16. 交通运输大数据发展特点、政策、应用及趋势 | 交通运输部科学研究院黄莉莉
  17. 【DB宝3】在Docker中使用rpm包的方式安装Oracle 19c
  18. java 给pdf解密_PDF文件如何解密?分享一个简单的PDF解密方法
  19. [分享]linux架设BT Tracker服务器小记
  20. oem客户工程流程图_SFIS质量管理系统工作流程图

热门文章

  1. 如何成为一名优秀的老师?
  2. high-resolution image synthesis with latent diffusion models
  3. vs2015mfc编程c语言,计算机技术《VS2015_MFC编程入门》.pdf
  4. linux编译lapack,Linux下Lapack如何安装
  5. java searchview_Android SearchView搜索框组件的使用方法
  6. eclipse jsp工程右键没有run as选项
  7. UML--状态图的基本概念和作用
  8. arm64架构ubuntu18.04国内镜像源
  9. Unity 学习网站
  10. 国美金融贷款模块解析HTML,国美金融贷款支持网站链接