解析BER-TLV:Basic Encoding Rule-TLV

参考:
https://www.cnblogs.com/SCPlatform/p/5076935.html
https://blog.csdn.net/zy1049677338/article/details/70170951
https://blog.csdn.net/super_mimi/article/details/49000981

BER-TLV 数据对象编码:
根据 ISO/IEC 8825 的定义,BER-TLV结构由Tag、Length、Value三部分组成:
标签域( Tag)包括一个或多个连续字节。它定义一种类别、类型和一个数字。
长度域( Length)包括一个或多个连续字节。它定义了接下来一个域的长度。
值域( Value)定义数据对象的值。如果 L= ‘ 00’ ,则值域不存在。

解析:

一、TAG(标签)

Tag可以由1个与多个字节组成(EMV中说明最多只能有2字节组成),如下图所示
在这里插入图片描述

其中最为主要的是首字节,由三部分组成,高两位表示类别,低五位表示TagNumber,第6位表示类型;如图:
在这里插入图片描述

Tag编码:
在这里插入图片描述
表 B- 2 根据 ISO/IEC 8825 定义了当标签号=31(即第一字节的 b5- b1 位为‘ 11111’ )时,BER-TLV 标签跟随字节的编码规则。即Tag域扩展到下一个字节。
当b8为1时,还需要扩展。但EMV文档中说明,Tag域最多占用两个字节。

在这里插入图片描述
在这里插入图片描述

二、Length(长度)

①当长度用1 个字节表示:
长度域的最高字节的 b8 位为 0 , b7 到 b1 位的值作为value域的长度。长度域的范围为 1 到 127。
②当长度用1个字节以上字节表示的时候:
第一个字节的b8为1,b7-b1作为后续字节的长度。例:10000011,代表后续还有3个字节作为value域的长度(第一个字节不算,第一个字节作为一个Length的索引)。3个字节代表value的长度,意味着什么呢,意味着内容的长度当需要很大的时候,字节的位数就会跟着越高,3个字节就代表最大可以有256 * 256 * 256的长度。对于超过256字节较少见到,JavaCard中的下载文件时使用的Tag经常用到,扩展APDUs可能用到。
举例子:十进制数:130,因为255>130>127,所以用两个字节表示:81 82

三、Value(值)

基本数据对象的值域是一个数据元。数据元是带标识(标签)的最小数据域。
在这里插入图片描述
结构数据对象包括一个标签、一个长度和一个值域,其值域由一个和多个BER-TLV 数据对象组成。
在这里插入图片描述**

四、示例

TLV格式数据实例

数据: 5F2D027A68

Tag域

5F → 01011111 → 5F 2D → 00101101 → 5F2D

Length域

02 → 00000010 → 02(2字节)

Value域

7A68

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值