【发布时间】:2021-02-21 04:39:10
【问题描述】:
我在解码此 TLV 时遇到问题
模板标签 (7001) 2 个字节
长度标签(0020)2字节
值是另一个 TLV
标签(e101)长度(000f)值(373834313938353338353236313430)
标签(e102)长度(0009)值(0009303931383631393038)
70010020e101000f373834313938353338353236313430e1020009303931383631393038
当我尝试任何 TLV 解码器时,它只会将模板标签读取为 1 个字节,然后将错过其余部分。你能就如何解析它提出建议吗?顺便说一句,我接收到 Base64String 的数据,然后我转换为 HEX
【问题讨论】:
-
您没有提到任何特定的 TLV 解码器,但您对 LENGTH 的解释是有缺陷的。如果存在长度字段,则第一个字节 0020 将被解释为 00,而 20 将被解释为下一个标签。有关详细信息,请参阅 ISO 7816 第 4 部分。
-
这可能是某人写的,他想写类似 TLV 的东西,但对规则没有足够的了解。因此格式似乎是专有的,我不知道你会找到合适的解析器
-
这个问题用 asn.1 标记。在 ASN.1 BER (ITU-T X.690) 中,0x70 表示应用程序,构造标签为 16。所以标签确实是 1 个字节。数据要么是错误的(如果您期待别的),要么不是 X.690 BER 数据,要么是您自己对它的解释不正确。