TLV格式说明
来源:互联网 发布:redis c语言接口 编辑:程序博客网 时间:2024/04/26 00:02
在下载公钥的时候经常会遇到tag后面接的是0x81,这并不是这个tag的L长度,0x81的后面一个字节才是长度。
下面是对tag后面出现0x81的说明:
TLV(tag-length-value),即每个子域由tag标签(T),子域取值的长度(L)和子域取值(V)构成。
tag标签的属性为bit,由16进制表示,占1~2个字节长度。例如,“9F33”为一个占用两个字节的tag标签。而“95”为一个占用一个字节的tag标签。若tag标签的第一个字节(注:字节排序方向为从左往右数,第一个字节即为最左边的字节。bit排序规则同理。)的后四个bit为“1111”,则说明该tag占两个字节,例如“9F33”;否则占一个字节,例如“95”。
子域长度(即L本身)的属性也为bit,占1~3个字节长度。具体编码规则如下:
a) 当L字段最左边字节的最左bit位(即bit8)为0,表示该L字段占一个字节,它的后续7个bit位(即bit7~bit1)表示子域取值的长度,采用二进制数表示子域取值长度的十进制数。例如,某个域取值占3个字节,那么其子域取值长度表示为“00000011”。所以,若子域取值的长度在1~127字节之间,那么该L字段本身仅占一个字节。
b) 当L字段最左边字节的最左bit位(即bit8)为1,表示该L字段不止占一个字节,那么它到底占几个字节由该最左字节的后续7个bit位(即bit7~bit1)的十进制取值表示。例如,若最左字节为10000010,表示L字段除该字节外,后面还有两个字节。其后续字节的十进制取值表示子域取值的长度。例如,若L字段为“1000 0001 1111 1111”,表示该子域取值占255个字节。所以,若子域取值的长度在127~255字节之间,那么该L字段本身需占两个字节。
也就是说,tag(T)+ 0x81 + L(1字节) + V,tag长度L在127~255字节之间;
tag(T)+ 0x82 + L(2字节) + V,tag长度L在大于255字节;
- TLV格式说明
- TLV格式是什么格式
- TLV 格式及编码
- TLV格式及编码
- TLV 格式及编码
- TLV 格式及编码
- 【TLV格式及编码】
- tlv 格式解析
- TLV 格式及编码
- tlv - 可变编码格式
- TLV格式及编码
- 报文协议中TLV格式
- java解析TLV格式数据
- PBOC-TLV编码格式解码
- java解析TLV格式数据
- TLV格式和JAVABEAN的转换工具
- TLV 格式及编解码示例
- 【通信】TLV 格式及编解码示例
- HDU - 1824 Let's go home(2-SAT)
- zookeeper原理
- hdu1702(ACboy needs your help again!) 在杭电又遇坑了
- STL find函数
- cocos2d中缓存相关
- TLV格式说明
- 杭电1517 A Multiplication Game
- STL string
- 关于hash
- firebug 扩展介绍和下载
- win10囧冏记
- Stack总结
- HDU - 3622 Bomb Game(二分+2-SAT)
- 对决策负责