🔍 BER-TLV 解析器

解析 EMV、GP、ISO 7816 等规范中的 TLV 数据。

支持 Tag 1-2 字节,Length 短格式(1字节)或长格式(首字节0x81-0x84)。
等待解析...

※ 支持 Tag 1-2 字节,Length 短格式(1字节)或长格式(首字节0x81-0x84)。

BER-TLV 解析器详解

BER-TLV(Basic Encoding Rules, Tag-Length-Value)是 ISO/IEC 8822 标准定义的数据编码方式,广泛用于智能卡通信。EMV、GlobalPlatform、ISO 7816-4 标准都使用 TLV 编码进行数据交换。理解 TLV 结构是调试 APDU 响应和开发卡片应用的基础技能。

TLV 三要素

每个 TLV 对象由三部分组成:Tag(标签)标识数据类型,Length(长度)指示 Value 的字节数,Value(值)承载实际数据。构造类型(Constructed)的 Value 中包含嵌套的子 TLV,解析器需要递归解码。基本类型(Primitive)的 Value 是原始数据。Tag 的第 6 位(从低位起)是构造标志:1 表示构造类型,0 表示基本类型。

Tag 编码规则

单字节 Tag:低 5 位若不全为 1(0x1F),则 Tag 只占 1 字节。高 2 位表示类别:00=Universal(通用)、01=Application(应用)、10=Context-specific(上下文相关)、11=Private(私有)。若低 5 位全为 1,则 Tag 延伸到后续字节,每个后续字节最高位为 1 表示延续,最高位为 0 表示最后一个字节。

Length 编码规则

短格式:首字节值 0x00-0x7F(0-127),直接表示长度。长格式:首字节为 0x81-0x84,低位指示后续 1-4 字节为大端长度值。例如 0x82 01 00 表示 256 字节。不定格式(0x80)在 BER 中允许但在 DER 中不允许,以 00 00 结尾。

在智能卡中的应用

EMV 交易中,READ RECORD 响应数据是 TLV 编码的,包含 PAN(5A)、有效期(5F24)、ATC(9F36)等标签。SELECT 响应的 FCI 也是 TLV 结构,包含 6F(FCI 模板)、84(DF 名/AID)、A5(FCI 专有模板)。GlobalPlatform 命令数据如 INSTALL、LOAD 也使用 TLV 编码。本解析器支持递归解码构造类型,显示每层 Tag、Length、十六进制值和 ASCII 解释,方便调试 APDU 数据。