计算机tlv简介_TLV 格式及编码
TLV
格式及编码
几乎所有的需要在卡片和终端之间传送的数据都是
TLV
格式的
. PBOC
文档里并没有对
TLV
编码细节做具体说明
,
而
EMV
的手册里虽有叙述,
但并不详细
.
我下面就要很详细的分
析
TLV
的编码格式并给出相应的
TLV
解码的伪代码
.
TLV
是
tag,
length
和
value
的缩写
.
一个基本的数据元就包括上面三个域
.
Tag
唯一标
识该数据元
, length
是
value
域的长度
. Value
就是数据本身了
.
举个例子
,
下面是一个
tlv
格式的
AID
(应用标识符)字节串”
9F0607A0000000031010
”
,
其中
9F06
是
tag, 07
是长度
, A0000000031010
就是
AID
本身的值了
.
对于程序编写人员来说,
我们关心的是,
如果有类似上面这样的一串
TLV
编码的字节串
从卡片传过来
,
怎么样从中提取我们想要的数据
.
这就牵扯出
TLV
解码的问题了
.
其中
BER-TLV
编码是
ISO
定义一种规范
,
然后到了
PBOC/EMV
里被简化了
,
哪里被简化
了呢
?
举一个例子
, tag
域在
ISO
里可以有多个字节
,
而
PBOC/EMV
里规定只用前两个字节
.
我下面要讲的
TLV
解码就是基于
PBOC/EMV
的简化版本
.
首先看一下
tag
域是怎样编码的
. Tag
域占最多占两个字节
.
编码规则如下面两幅图:
<
图
1>
<
图
1>
解释一下这两幅图
.
第一个图是第一个字节的编码规则
. b8
和
b7
两位标识
tag
所属
类别
.
这个可以暂时不用理
. b6
决定当前的
TLV
数据是一个单一的数据和复合结构的数
据
.
复合的
TLV
是指
value
域里也包含一个或多个
TLV,
类似嵌套的编码格式
.
b5~b1
如果
全为
1
,则说明这个
tag
下面还有一个子字节
.
占两个字节
,
否则
tag
占一个字节
.
第二幅图是说明如果
tag
占用两个字节
,
第二个字节的编码格式
.
B8
决定
tag
是否还
有后绪的字节存在,因为前面说过,
PBOC/EMV
里的
tag
最多占两个字节
,
所以该位保持为
0.
清楚了上面
tag
编码格式
,
可很容易写出
tag
域解码的代码了
.
假设,
终端接收到一人
字节串,这个字节串保存在
tlvData
的字节数组里
,
伪代码如下
计算机tlv简介_TLV 格式及编码相关推荐
- 计算机tlv简介_TLV编码格式详解
涉及到通信的地方就会需要通信协议,因为只有确定了通信协议,通信双方才能理解对方所发来的数据有什么含义.BER(Basic Encoding Rule)是一种编码规格说明,描述如何将ASN.1类型的值编 ...
- 计算机tlv简介_优化TLV编码规则
优化 TLV 编码规则 王沁 ; 许娜 ; 张燕 ; 张晓彤 [期刊名称] <计算机科学> [年 ( 卷 ), 期] 2008(035)011 [摘要] 抽象语法标记 ASN.1 是一种 ...
- 计算机tlv简介_TLV2462
TLV2460, TLV2461, TLV2462, TLV2463, TLV2464, TLV2465, TLV246xA FAMILY OF LOWĆPOWER RAILĆTOĆRAIL INPU ...
- 使用计算机制作数字文本格式,计算机中数字、文字、图像、声音和视频的表示与编码...
设计计算机的最初目的是进行数值计算,计算机中首先表示的数据就是各种数字信息.随着应用的发展,现在计算机数据以不同的形式出现,如:数字.文字.图像.声音和视频等.但是,在计算机内部,这些数据形式还是以数 ...
- tlv c语言,TLV简介以及c语言实现装包与解析
一.TLV简介 协议可以使双方不需要了解对方实现细节的情况下进行通信,因此双方可以是异构的,例如服务器可以是c,客户端可以是java,基于相同的协议,我们可以用自己熟识的语言工具来对通信发送的数据装包 ...
- 计算机二级日期格式,09年计算机二级辅导:指定格式的日期字符串转化成java.util.Date类型日期对象...
09年计算机二级辅导:指定格式的日期字符串转化成java.util.Date类型日期对象 分类:计算机等级| 更新时间:2008-10-16| 来源:教育联展网 将未指定格式的日期字符串转化成java ...
- 计算机操作简介,什么是计算机操作的快捷键?计算机操作快捷方式简介
计算机已经是现代生活中必不可少的产品. 无论是工作,生活还是娱乐,他们都离不开计算机. 没有电脑,生活会很无聊. 使用计算机时,不同的人对计算机有不同的了解,因此使用计算机时会有所不同. 如果您可以在 ...
- 计算机网络应用简介_计算机网络简介
计算机网络应用简介 Find out about computer networks in this crash course. You will learn about the following ...
- java json重命名,eclipse中java变量怎么变成json格式的编码?
我们想要使用eclipse来进行从java变量到json格式的编码米该怎么实现呢?下面我们就来看看详细的教程. 一.导入jar包 1.我们首先要下载好我们需要的json包,然后我们右击项目,选择&qu ...
最新文章
- 自动驾驶中图像与点云融合的深度学习研究进展综述
- jdk安装失败_jenkins全局工具jdk、maven安装
- python(40):利用utf-8编码判断中文英文字符
- java西游记壹_岩浆数码再现手机RPG游戏--西游记壹
- Linux的pcel问题-bash: pecl: command not found
- 截屏当前界面_华为手机居然有这3种神奇的截屏方法,用过后,我就再也离不开了...
- 前端学习(1963)vue之电商管理系统电商系统之控制级联选择框的选择范围
- @param注解的用法解析_SpringBoot 配置类解析
- 20155209 2016-2017-2 《Java程序设计》第五周学习总结
- linux 终端中文乱码解决方法
- 解决TIME_WAIT造成的服务器无法访问
- Mysql 主从复制简易操作指南
- 使360浏览器自动使用最高IE内核
- python输出数字三角形_Python|2020蓝桥杯之数字三角形
- 图形学中走样(Aliasing)和反走样(Antialiasing)
- 这种木头比钢和陶瓷更锋利,轻松切开半熟牛排,钉穿三层木板,还永不生锈 | Cell子刊...
- Java项目:JSP二手自行车在线销售商城平台系统
- Spring源码系列- Spring Beans - 核心类的基本介绍
- 用来制作可启动U盘的Windows开源工具--Ventoy
- Java内存模型:线程并发下的对象逸出