首页 > 其他分享 >der编码

der编码

时间:2024-03-27 23:00:30浏览次数:22  
标签:编码 13 06 03 der 30 31

DER编码过程

1. 编码内容

  • countryName = “CN”
  • organizationName = "20211412"
  • commoaName = "laijiayi"

2. 编码过程

  • 得出编码内容的ASCII十六进制
  • CN 43 4e
  • laijiayi 6c 61 69 6a 69 61 79 69
  • 20211412 32 30 32 31 31 34 31 32

2.1 attributeType编码

  • 定长模式
  • 标识串:低位标识编码,1个字节。
  • 长度串:短型编码,1个字节
  • 内容串:二个类型有对应的OID,对应不同的内容串,3个字节
    | attributeType | OID | 标识串 | 长度串 | 内容串 |
    | ---------------- | -------- | ------ | ------ | -------- |
    | countryName | 2.5.4.6 | 06 | 03 | 55 04 06 |
    | organizationName | 2.5.4.10 | 06 | 03 | 55 04 0A |
    | commoaName | 2.5.4.3 | 06 | 03 | 55 04 03 |

2.2 attributeValue编码

  • 长度串——短型编码,1个字节
  • 内容串——对应内容的ASCII码
attributeVaule 标识串 长度串 内容串
"CN" 13 02 43 4E
"20211412" 13 08 32 30 32 31 31 34 31 32
"laijiayi" 13 08 6c 61 69 6a 69 61 79 69

2.3 attributeValueAssertion编码

  • 标识串——低标识编码方式,1个字节
  • 长度串——短型编码,1个字节
  • 内容串——由attributeType和attributeValue的DER编码组成
attributeValueAssertion 标识串 长度串 内容串
countryName = “CN” 30 09 06 03 55 04 06 13 02 43 4E
organizationName = "20211412" 30 0F 06 03 55 04 0A 13 08 32 30 32 31 31 34 31 32
commoaName = "laijiayi" 30 11 06 03 55 04 03 13 0A 6A 69 61 6E 67 6A 69 61 79 75
2.4 RelativeDistinguishedName编码
  • 标识串——低标识编码方式,1个字节
  • 长度串——短型编码,1个字节
  • 内容串——由attributeValueAssertion的DER编码组成
RelativeDistinguishedName 标识串 长度串 内容串
countryName = “CN” 31 0B 30 09 06 03 55 04 06 13 02 43 4E
organizationName = "20181318" 31 11 30 0F 06 03 55 04 0A 13 08 32 30 31 38 31 33 31 38
commoaName = "jiangjiayu" 31 13 30 11 06 03 55 04 03 13 0A 6A 69 61 6E 67 6A 69 61 79 75
2.5 RDNSequence编码
  • RDNSequence是SEQUENCE OF结构类型,编码规则采用结构类型定长模式。
  • 标识串——低标识编码方式,1个字节
  • 长度串——短型编码,1个字节
  • 内容串——由3个RelativeDistinguishedName的DER编码拼接而成
RDNSequence 标识串 长度串 内容串
countryName = “CN” 30 35 31 0B 30 09 06 03 55 04 06 13 02 43 4E 31 11 30 0F 06 03 55 04 0A 13 08 32 30 31 38 31 33 31 38 31 13 30 11 06 03 55 04 03 13 0A 6A 69 61 6E 67 6A 69 61 79 75
2.6 Name编码
  • Name为CHOICE类型,其DER编码值与RDNSequence相同
  • 最终编码值如下:
    30 35 31 0B 30 09 06 03 55 04 06 13 02 43 4E 31 11 30 0F 06 03 55 04 0A 13 08 32 30 31 38 31 33 31 38 31 13 30 11 06 03 55 04 03 13 0A 6A 69 61 6E 67 6A 69 61 79 75

用OpenSSL asn1parse 分析编码的正确性

  • 命令行输入
openssl asn1parse [-inform PEM|DER] [-in filename] [-out filename] [-noout] [-offset number] [-length number] [-i] [- structure filename] [-strparse offset]
openssl asn1parse -inform DER -in 20211412.der

标签:编码,13,06,03,der,30,31
From: https://www.cnblogs.com/laijiayi/p/18100522

相关文章

  • module ‘tensorflow‘ has no attribute ‘placeholder‘问题的解决
    问题描述下载好tensorflow之后,就报错了~~~就显示tensorflow没有那个属性问题解决依据网上给出的答案,官网给出的解决方案是将importtensorflowastf换成:importtensorflow.compat.v1astftf.disable_v2_behavior()需要注意的是,在我们复制之后,它会提示有报错,不过没有......
  • 深入理解 React 中的 children props 和 render props
    深入理解React中的childrenprops和renderprops在React中,childrenprops和renderprops是两种常见的组件复用模式,它们都可以帮助我们更好地组织和复用组件代码。虽然它们的实现方式有所不同,但都能够有效地实现组件之间的数据传递和功能共享。childrenpropsch......
  • Android开发-Android APP实操-1.项目创建及启动页面UI编码
    一、项目创建及模拟器安装1.选择新建一个project2. 选择空模板3.完成新project的设置 下载完成后点击Finish4.下载安卓模拟器 选择Pixel7点击下载R 为虚拟机命名,选择竖屏,点击Finish.5.点击启动,测试运行 运行成功! 二、启动页面UI编码 1.打开Main......
  • 揭秘字母a的 六副面孔:编码世界的趣味探险
    前言字符是我们编写程序的基础的基础。我们前端是最常见的字符,符号,数字,英文,中文,我们通常都是使用直接量来表示,偶尔会在正则表达等场景用到UTF-16码点的格式,问题来了,那你知道JS有几种字符表示方式吗?答案:至少6种,以字符a为例子:`a`//'a''a'//'a''\a'......
  • kindle电子书_越狱后koreader中自带OCR功能的设置
    KOReader一直以PDF阅读的优秀体验而闻名。然而,在尚未配置的情况下阅读图片类PDF在KOReader中长按屏幕无法像原生系统阅读正常文档一样划线取词,并且此时KOReader会弹出一个弹窗:没有OCR识别结果,或没有语言数据。KOReader有一个内置的OCR引擎用于识别扫描的PDF和DjVu文档中的文字......
  • Atcoder
    D-食塩水\[\frac{\sum{w_ip_i}}{\sum{w_i}}\gex\\\sum{w_i(p_i-x)}\ge0\\\]fromcollectionsimport*fromitertoolsimport*fromfunctoolsimport*defLI():returnlist(map(int,input().split()))defI():returnint(input())de......
  • (离线RAG、chatGLM3-6B)安装了fastchat:0.2.36,仍报错ModuleNotFoundError: No module nam
           在离线知识库服务(Langchain-Chatchat)本地搭建时,虽然在虚拟环境中安装了fastchat:0.2.36,但在运行时,仍报错ModuleNotFoundError:Nomodulenamed'fastchat.protocol'。              经过在网上查询,发现部署成功的案例采用的0.2.34版本的fast......
  • webpack loader和 plugin 实现原理
    1.webpack打包基本原理webpack的一个核心功能就是把我们写的模块化的代码,打包之后,生成可以在浏览器中运行的代码,我们这里也是从简单开始,一步步探索webpack的打包原理1.1一个简单的需求我们首先建立一个空的项目,使用npminit-y快速初始化一个package.json,然后安装webpa......
  • Zookeeper-Leader选举
    一、前言Zookeeper服务端集群启动,Leader选举是很重要的一部分。二、Leader选举2.1Leader选举概述Leader选举是保证分布式数据一致性的关键所在。当Zookeeper集群中的一台服务器出现以下两种情况之一时,需要进入Leader选举。(1)服务器初始化启动。(2)......
  • Atcoder ABC245H Product Modulo 2
    发现这个\(m\)很大,且这个式子是\(\times\)。一个想法是拆成\(m=\prod{p_i}^{e_i}(p_i\in\mathbb{P})\)然后对于\(M=p_i^{e_i}\)依次考虑\(b_i=a_i\bmodM\)和\(N=n\bmodM\)。根据\(\text{CRT}\),对于任意一个\(M\)得到的不同的\(b_i\)对于最后的\(a_i......