TLV 格式是什么格式

一种可变格式, TLV 的意思就是: Type 类型, Lenght 长度, Value 值; Type 和 Length 的长度固定,一般那是 2 、 4 个字节; Value 的长度有 Length 指定;

解析方法:

1. 读取 type 转换为 ntohl 、 ntohs 转换为主机字节序得到类型;指针偏移 +2 或 4

2. 读取 lenght ,转换为 ntohl 、 ntohs 转换为主机字节序得到长度;指针偏移 +2 或 4

3. 根据得到的长度读取 value ,指针偏移 +Length ; 。 。 。 。 继续处理后面的 tlv ; 标签 (Tag) 字段是关于标签和编码格式的信息; 长度 (Length) 字段定义数值的长度; 内容 (Value) 字段表示实际的数值。

因此,一个编码值又称 TLV(Tag,Length,Value) 三元组。编码可以是基本型或结构型,如果它 表示一个简单类型的、完整的显式值,那么编码就是基本型 (primitive) ;如果它表示的值具 有嵌套结构,那么编码就是结构型 (constructed) 。

TLV 编码就是指先对 Tag 编码,再对 Length 编码,最后对 Value 编码。 BER 编码的长度确定 的编码方式就是这样的。 BER 编码有两种方式:

一种是长度确定的编码方式。 这由 3 部分组成 Identifier octets 、 Length octets 和 Contents octets (可以和 TLV 对应) 。

另一种是长度不确定的编码方式。这由 4 部分组成 Identifier octets 、 Length octets 、 Contents octets 、 End-of-contents octets 。其 中 Length octets 为 0x80 , End-of-contents octets 为 0x00 00 。

每种类型都能够编码成长度确定的编码方式, 但是有的类 型不能够编码成长度不确定的编码方式。 DER 编码只能使用长度确定的编码方式。 Identifier octets 由 3 部分组成 Class 、 P/C 和 Tag number 。

Identifier octets 的第一个字节的高 2 位为 Class ,接下来一位为 P/C ,其他位表示 Tag number 。 Class 有 4 中类型 Universal(00) 、 Application(01) 、 Context-specific(10) 和 Private(11) 。

P/C 位如果为 1 则表示是 Constructed 的, 为 0 表示是 Primitive 。如果 0<=T ag number<=30 ,则整个 Identifier octets 只有一个字节,否 则第一个字节的后 5 位前为 1 ,接下来找第一个最高位为 0 的字节,该字节就是 Identifier octets 的最后一个字节。从第二个字节到最后一个字节去掉最高位的值拼起来就是 T ag number 的值。

长度确定的编码方式的 Length octets 有两种方法编码长度,一种是只用一个字节表示长度, 其最高位为 0 ,后 7 位表示长度值,显然这样只能表示 0-127 。

另一种是第一个字节的最高 位为 1 ,其他位表示后面还有多少个字节属于 Length octets 。后面的那些字节组成的就是长 度值。长度值表示的是 Contents octets 所占的字节数。 DER 要求如果长度为 0-127 则要使用 第一种方式,如果大于 127 则使用后一种方式。

TLV格式是什么格式的更多相关文章

  1. AngularJS过滤器filter-时间日期格式-渲染日期格式-$filter

    今天遇到了这些问题索性就 写篇文章吧 话不多说直接上栗子 不管任何是HTML格式还是JS格式必须要在  controller 里面写 // new Date() 获取当前时间 yyyy-MM-ddd ...

  2. C#RSA算法实现+如何将公钥为XML格式转为PEM格式,给object-C使用

    .net中,处于安全的考虑,RSACryptoServiceProvider类,解密时只有同时拥有公钥和私钥才可以.原因是公钥是公开的,会被多人持有.这样的数据传输是不安全的.C#RSA私钥加密,公钥 ...

  3. RSA密钥之C#格式与Java格式转换

    前言 最近由于项目需求,服务端由c#编写,客户端由java编写.通信数据使用RSA非对称加密.但是java和c#生成的密钥格式是不一样的,所以需要转换格式才可以正常使用.网上搜到使用java进行格式转 ...

  4. Linux下如何将数据库脚本文件从sh格式变为sql格式

    在从事软件开发的过程中,经常会涉及到在Linux下将数据库脚本文件从sh格式变为sql格式的问题.本文以一个实际的脚本文件为例,说明格式转换的过程.        1. sh文件内容 本文中的文件名为 ...

  5. 把硬盘格式化成ext格式的cpu占用率就下来了

    把硬盘格式化成ext格式的cpu占用率就下来了我是使用ext4格式 @Paulz 还有这种事情? 现在是什么格式?- - ,你自己用top命令看一下啊就知道什么东西在占用cpu了下载软件一半cpu都用 ...

  6. Linux在什么样的从脚本文件数据库sh格式改变sql格式

    在软件开发过程中,经常参与Linux从下一个脚本文件数据库sh格式改变sql格式问题.在本文中,一个实际的脚本文件,例如.描述格式转换过程.        1. sh文件内容 本文中的文件名称为exa ...

  7. Excel 转 vCard格式、CSV格式

    Excel 转vCard格式(常用于Gmail, Yahoo, 163等).CSV格式(常用于Outlook, Foxmail等) 最近公司邮件通讯录需要更新,我就将原来的通讯录给删除了,准备重新导入 ...

  8. Intel格式与Motorola格式的区别

      Intel低字节在前 Motorola高字节在前    在进行CAN总线通信设计或者测试过程中,经常看到CAN总线信号的编码格式有两种定义:Intel格式与Motorola格式.究竟两种编码格式有 ...

  9. [python]html格式转md格式

    html格式转md格式 # 模块html2text pip install html2text/pip3 install html2text 测试: import html2text as ht te ...

随机推荐

  1. 6. Android框架和工具之 JSON解析

    Android进阶笔记17:3种JSON解析工具(org.json.fastjson.gson)

  2. Oracle 11g R2 for Win7旗舰版(64位)的安装步骤

    1.下载Oracle 11g R2 for Windows的版本 下载地址:http://www.oracle.com/technetwork/database/enterprise-edition/ ...

  3. Javascript函数(定义、传值、重载)

    Javascript 函数的定义的方式有不止一种. 第一种方式: function fn1(){ alert(typeof fn1); alert(“fn1”); } 在调用的时候直接就可以fu1() ...

  4. 怒刷DP之 HDU 1087

    Super Jumping! Jumping! Jumping! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64 ...

  5. poj 2029 二维树状数组

    思路:简单树状数组 #include<map> #include<set> #include<cmath> #include<queue> #inclu ...

  6. 基调(听云)app,服务器,质量测试手段

    1. 网络质量检测 http://www.tingyun.com/tingyun_network.html

  7. ios卡牌游戏项目源码

    上传者fu_sion,源码CardGame,一副牌从中抽取十二张牌,翻开牌可以相同的花色+1 相同的数字+4分 同一张牌翻开后可以盖上(算是一个BUG)就酱紫~~ 项目源码下载:http://code ...

  8. HDU1064 第一道JAVA

    简单的不能再简单的题目, 不过倒是可以来练练新学的JAVA.. import java.util.Scanner; public class Hello{ public static void mai ...

  9. javaweb毕业设计

    javaweb毕业设计,管理系统设计,Strut2项目,Springmvc项目,javaweb项目学习. 都是可以运行的,(配数据库和论文),都能提供技术咨询,可以修改.欢迎+扣扣396058587咨 ...

  10. 郑州轻工业OJ1400--这不可能是情书吧

    地址:http://acm.zzuli.edu.cn/problem.php?id=1400 #include<stdio.h> #include<string.h> #inc ...