我在文档中发现他们指的是 SIMPLE-TLV BER-TLV 。我查看了大多数EMV和GP文档,但他们没有提到不同之处。

谁能帮助我了解两者的区别?

最佳答案

ISO / IEC 7816-4中用于智能卡的数据字段

BER编码

这是ISO / IEC 7816-4使用的更常见的BER encoding的规范:



请注意,在当前标准中,ISO / IEC 7816仅允许使用最多5个长度的字节(指定大小最大为2 ^ 32-1字节)。也不支持不定长度编码。这些限制特定于智能卡。请注意,在更高版本的ISO / IEC 7816-4中引入了4和5字节长度的编码。较早的卡/读卡应用程序可能仅支持3个长度的字节(即,值大小最大为64KiB字节,而不是4GiB)。

BER TLV规范更加广泛(这就是为什么SIMPLE-TLV被称为“简单”)的原因。由于互联网上有大量可用信息,因此我不会过多地讨论细节。仅举几个区别,标签具有语法含义,可能包含多个字节,并且长度编码相当复杂。

通常,BER仅应用作ASN.1结构的编码,并使用ASN.1语法定义该结构。但是ISO 7816-4搞砸了,仅直接指定BER标签字节。

请注意,有时指定了DER而不是BER。在这种情况下,您应该仅使用最小字节数作为长度字段的大小-例如在以下示例中,单个字节的长度为05。 BER编码的ISO / IEC规范基本上是美国特定X.690标准的副本,也反射(reflect)在国际标准ISO / IEC 8825-1(均为付费软件)中。

SIMPLE-TLV编码

在ISO / IEC 7816-4中的BER规范之后是SIMPLE-TLV规范。 SIMPLE-TLV特定于ISO 7816-4。



请注意,该标准忘记直接指定字节序。但是,您可以在ISO / IEC 7816-4中采用大端编码。

样品

以下示例均用于传达相同的标签号(用于定义字段)和值,但其中一个示例为BER定义了标签号31。

SIMPLE-TLV示例

0F 05 48656C6C6F                 // tag number 15, length 5 then the value
0F FF0005 48656C6C6F             // tag number 15, length 5 (two bytes), then the value

BER-TLV示例:
4F 05 48656C6C6F                 // *application specific*, primitive encoding of tag number 15, length 5 then the value
4F 8105 48656C6C6F               // the same, using two bytes to encode the length
4F 820005 48656C6C6F             // the same, using three bytes to encode the length
4F 83000005 48656C6C6F           // the same, using four bytes to encode the length
4F 8400000005 48656C6C6F         // the same , using five bytes to encode the length
5F0F 05 48656C6C6F               // **invalid** encoding of the same, with two bytes for the tag, specifiying a tag number 15 which is smaller than 31
5F1F 05 48656C6C6F               // application specific, primitive encoding of **tag number 31**

在具有两个字节标签编码的最后一个示例中,第一个字节为40十六进制,其中最左边的前3个位010指定应用程序特定的编码,在其上加上魔术值1F(31)表示另一个字节将跟随标签号,同样为1F,因此值为31。

差异性

应注意以下差异:
  • SIMPLE-TLV是对标签和长度进行编码的另一种方法(尽管编码可能看起来类似,例如,当使用单个字节指示长度部分时)
  • SIMPLE-TLV不包含有关字段类别的信息,例如如果它是为ASN.1定义的(因为它未链接到ASN.1),则为
  • SIMPLE-TLV如果是原始的或构造的(原始直接指定一个值,构造的意味着嵌套的TLV结构),则不包含信息
  • SIMPLE-TLV对标签号(在1到254之间,包括1和254之间)和长度(最多65535)有限制。
  • 10-07 12:20