TLV数据元编码规则
TLV是Tag、Length和Value的缩写,一个基本的数据元就包括上面三个域,Tag唯一标识该数据元,Length是Value域的长度,Value就是数据本身。而在PBOC和EMV中几乎所有卡和终端之间传送的数据都是TLV编码。IC卡复制下面就具体叙述一下有关TLV编码的相关规则:
Tag域编码
表4-4详细叙述了TLV编码Tag域的前2字节的编码规则。
表4-4Tag编码规则(一)
依据ISO/IEC8825,表4-5详细叙述了TLV编码中当Tag序号大于31(即比特5至比特1的值为“11111”)时Tag域后续字节的编码。
表4-5Tag编码规则(二)
在TLV编码之前,中间或之后的数据中,“00”和“FF”都是没有解析意义的。
Length域编码
当数据域的标志比特8值为“0”时,表示长度域只有一个字节,此时比特7至比特1的数值表示了值域的长度数值。它的范围是从1到127。
当数据域的标志比特8值为“1”时,此时比特7到比特1的数值表示了长度域后续的字节数。后续的长度字节表示了值域的长度数值。尤其是当后续值域的数值字节数大于或等于128时,如仅用一个字节的长度域将无法满足需求,便需要如前所述,第一个字节的比特8设置为1,比特7至比特1设置为“0000001”,第二字节为后续实际值域长度字节数,长度域便为“81X”,可以表示128字节至255字节的长度。
在实际的应用中,若值域数据字节数小于128但长度域仍为两个字节(例如“8104”),终端应能正确理解其含义。
Value域编码
数据元素是TLV编码中的基本单元,一个数据元素是值域当中的最小单位,亦即一个Tag。一个基本的Tag分为以下三部分:Tag值(T),长度值(L),数据值(V),而一个值域可能包括一个或多个连续的Tag。AEF中的一条记录就是一个构造好的TLV编码规范。其组成如表4-6所示。
表4-6Value域编码规则