EBR-TLV数据格式
EMV规范中的BER-TLV数据格式:BER-TLV结构由Tag、Length、Value三部分组成。
【TAG域】
TAG可以由1个与多个字节组成,TAG域的第一个字节编码格式如下:
其中由三部分组成,高两位表示Tag类别,低五位表示Tag 编号,第6位表示Tag类型。
Tag类别:
00:通用类
01:应用类
02:上下文相关类
03:专用类
在智能卡中见得较多的是应用类与上下文相关类,通用类与行业无关,好像只有一个(0x06:Object Identifier);应用类就很多了,如前文中的0x6F,还有经常碰到的0x4F表示AID(应用标识符),在7816中定义,在其它很多的应用中就遵循了,如EMV,PBOC,GP等。
0x6F: '0110 1111'
0x4F: '0100 1111'
上下文类在特定的使用环境中意义不一样,具体可以参考相应的规范定义。专用类一般在私有的定义中出现,例如一些卡商在卡片的预个人化命令中使用。
Tag类型:
Tag的类型由第6位表示,
0:表示简单类型
1:表示结构类型
可以用一个比喻来理解两种类型的区别,简单类型相当于树形结构中的叶子节点,结构类型相当于枝干。
简单举两个例子,下面两个都是符合TLV编码的数据流:
70069F3803010203
9F3803010203
可以看到,70 TAG的值(value)域也是由TLV结构组成的。
而9F38 TAG的值域则是由简单数据构成(010203)不需要符合TLV结构编码。
基于这个原则,TLV可以设计成多层嵌套的关系。
Tag编号:
Tag编号要根据Tag的长度来确定,对于一个字节的Tag,能表示的编号为2^5为32,但全为1的时候表示有后续字节,因此一个字节的tag只能表示31个编号,大于31的只能由第多个字节表示。其后续字节格式:
实际应用中,Tag编号很少单独拿来使用;
【LEN域】
BER-TLV中的长度表示Value域中的数据长度,由1到多个字节组成。
如果首字节的最高位为0,则低7位表示长度,数据长度最大值为127。
如果首字节的最高位为1,则表明Value域中的数据长度超过127,其低7位表示后续LEN域的字节数,如下所示:
【VAL域】
值由一个或多个字节组成,根据Tag中的类型不同,有简单类型及结构类型两种表示方法。
参考引用:
https://www.cnblogs.com/highkgao/p/3968086.html
https://www.cnblogs.com/SCPlatform/p/5076935.html
EBR-TLV数据格式的更多相关文章
- OC封装的TLV数据格式解析库
作者:朱克锋 邮箱:zhukefeng@iboxpay.com 转载请注明出处:http://blog.csdn.net/linux_zkf TLV是一种可变格式,意思就是: Type类型, Leng ...
- 几种常见ECG数据格式及对比
SCP.DICOM.HL7aECG.GDF格式及对比 本文档首先给出SCP.DICOM.HL7aECG.GDF四种心电信号格式的具体数据结构,然后分析其各自的特点及适用范围. 一.SCP-ECG fo ...
- 通信协议TLV的介绍及在python下的代码实现及仿真
TLV协议是一种通讯协议,一般将数据封装成TLV的形式,即Tag,Length,Value.协议就是指通信双方对数据传输控制的一种规定,规定了数据格式,同步方式,传送速度,传送步骤的问题作出统一的规定 ...
- TLV通信协议
基础 TLV协议是BER编码的一种,全称是Tag.length.value.该协议简单高效,能适用于各种通信场景,且具有良好的可扩展性.TLV协议的基本格式如下: 其中,Tag占2个字节,是报文的唯一 ...
- libsvm的数据格式及制作
1.libsvm数据格式 libsvm使用的训练数据和检验数据文件格式如下: [label] [index1]:[value1] [index2]:[value2] … [label] [index1 ...
- Data组件的JSON数据格式
{ // "@type" - 类型标识,"table"表明这个JSON是一个table结构的数据 "@type" : &qu ...
- TLV(类型—长度—值)格式及编码
转自: http://www.cnblogs.com/tml839720759/archive/2014/07/13/3841820.html 引子: 前段时间在项目中第一次接触TLV,项目中用这种格 ...
- 【原创】开源Math.NET基础数学类库使用(04)C#解析Matrix Marke数据格式
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
- 【原创】开源Math.NET基础数学类库使用(05)C#解析Delimited Formats数据格式
本博客所有文章分类的总目录:[总目录]本博客博文总目录-实时更新 开源Math.NET基础数学类库使用总目录:[目录]开源Math.NET基础数学类库使用总目录 前言 ...
随机推荐
- MySQL cmd操作
1.开启关闭服务 net start mysql net stio mysql 2.登陆 在CMD命令窗口敲入命令 mysql -hlocalhost -uroot -p 后按回车(注意这里的&quo ...
- 第六章、ajax方法以及序列化组件
目录 第六章.ajax方法 一.choice参数介绍 二.MTV与MVC模型 三.ajax方法 四.案例 五.Ajax传json格式的数据 六. AJAX传文件 代码如下 ajax传文件需要注意的事项 ...
- Django阶段总结与Ajax
一.路由控制 二.视图层 三.模板层 四.模型层.单表操作.多表操作 五.什么是ajax 一.路由控制 补充点(什么是web应用?) 网站:BS架构应用程序:B是浏览器 S:server(实现了ws ...
- iview 如何在表格中给操作图标添加Tooltip文字提示?
项目需要用到的iview 表格中操作项目有各种各样的图标,而各种各样的图标代表不同的操作,面对新用户可能很懵,那如何给这些图标添加Tooltip文字提示? 废话不多讲,直接看代码: <templ ...
- HashMap源码分析一
HashMap在java编程中,算使用频率top10中的类了.这里是关于HashMap的源码的分析.一个类的源码分析,要看他的来龙去脉,他的历史迭代.一来从以前的版本开始分析,由易到难: ...
- python3正则表达式总结
转自csdn,去这里看更多吧: https://blog.csdn.net/weixin_40136018/article/details/81183504 还有一个废话很多的详细系列,在这里:htt ...
- BZOJ 3289: Mato的文件管理 (区间查询逆序对)
这道题就是不要求强制在线的 BZOJ 3744 Gty的妹子序列 所以说离线做法有莫队,在线做法见上面连接. 这里贴出常数巨大O(nnlogn)O(n\sqrt nlogn)O(nnlogn)分块+ ...
- Codeforces Round #589 (Div. 2) C - Primes and Multiplication(数学, 质数)
链接: https://codeforces.com/contest/1228/problem/C 题意: Let's introduce some definitions that will be ...
- 请求出现Referrer Policy: no-referrer-when-downgrade
请求出现Referrer Policy: no-referrer-when-downgrade,一直请求不成功,原因是请求连接出现问题,我这里的问题是api前少了/,导致字段和域名拼接起来,所以请求U ...
- 智能指针unique_ptr记录
unique_ptr 对对象独有管理,无法复制,共享,值传递,可以使用move语义来转移控制权. std::default_delete<int> d; std::unique_ptr&l ...