【问题标题】:Specific and major difference between Simple TLV and BER TLV简单 TLV 和 BER TLV 之间的具体和主要区别
【发布时间】:2014-01-27 14:27:05
【问题描述】:

我想知道simple TLV和BER TLV的具体区别

为什么 BER TLV 5F05 05 48656C6C6F 无效,因为在 BER TLV 中标签可以有一个或多个连续字节???

也请举一些例子..

【问题讨论】:

标签: iso


【解决方案1】:

BER 表示允许携带其他 TLV 的载体

BER-TLV 数据对象包含 (TL (TLV) (TLV) 和一个标签字段,后跟一个编码数字的长度字段。 模板由一个或多个 BER-TLV 数据对象组成,每个数据对象由一个标签字段、一个编码数字的长度字段以及如果数字不为零,则包含一个值字段。

如果不清楚,请随时与我联系。

问候 阿努普

【讨论】:

  • 感谢 Anup 的回答。我想再补充一件与我的问题相关的事情 - 为什么 BER TLV 5F05 05 48656C6C6F 是无效的,因为在 BER TLV 中标签可以有一个或多个连续字节???答案是 - 在 BER TLV 中,Tag 字段可以按以下方式构造:
  • (ISO/IEC 7816 支持 1、2、……最多 5 个字节的长度字段) 第 1 字节 第 2 字节 第 3 字节 第 4 字节 第 5 字节 “00”到“7F” --- --- ---- ---- "81" "00" 到 "FF" --- ---- ---- "82" "0000" 到 "FFFF" ---- ---- "83" “000000”到“FFFFFF”----“84”“0000000000”到“FFFFFFFFFF”
  • 因此,在 BER TLV 5F05 05 48656C6C6F -> 标签的长度为 2 字节(5F05),这是错误的,因为如果标签的长度为 2 字节,那么它的第一个字节必须是“81”并且第二个字节可以是“00”到“FF”范围内的任何字节。如有混淆,请随时询问。谢谢,Ankit
【解决方案2】:

我想再补充一件与我的问题相关的事情 -

为什么 BER TLV 5F05 05 48656C6C6F 无效,因为在 BER TLV 中标签可以有一个或多个连续字节???

答案是-

与 BER TLV 一样,标签字段可以按以下方式构造: (ISO/IEC 7816 支持一、二、……最多五个字节的长度字段)

如果标签长度为 1 字节,则有效值可以是 - “00”到“7F”

如果标签长度为 2 个字节,则有效值可以是 - “81”(第一个字节)和“00”到“FF”(第二个字节)

如果标签长度为 3 个字节,则有效值可以是 - “82”(第 1 个字节)和“0000”到“FFFF”(第 2 + 3 个字节)

如果标签长度为 4 个字节,则有效值可以是 - “83”(第 1 个字节)和“000000”到“FFFFFF”(第 2+3+4 个字节)

如果标签长度为 5 个字节,则有效值可以是 - “84”(第 1 个字节)和“00000000”到“FFFFFFFF”(第 2+3+4+5 个字节)

因此,在 BER TLV 5F05 05 48656C6C6F -> 标签的长度为 2 字节 (5F05) 这是错误的,因为如果标签的长度为 2 字节,那么它的第一个字节必须是“81”,第二个字节可以是任何在“00”到“FF”的范围内。

如有疑问,请随时询问。

【讨论】:

  • 我知道为时已晚,但对于未来的读者:请看一下这个答案stackoverflow.com/a/18932655/1774251,它给出了正确的解释。根据格式,您的标签 5F05 是正确的(5F 的最后 5 个位是 1,因此 T 中至少还有 1 个字节,05 的第一位是 0,所以这是 T 的最后一个字节)。但根据 BER-TLV 解释是不正确的,因为第二个字节有含义并且不能小于 1F 或者标签应该只写在 1 个字节上。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-26
相关资源
最近更新 更多