我正在开发支持 EMV 卡的 POS 应用程序。我能够从 TLV 中的 Verifone MX 读卡器读取卡数据,但在将 TLV 数据解码为可读数据时遇到问题。
我能够将数据拆分为 TLV 标签及其值。结果值是十六进制而不是解码文本。
例子:
这是一个样本 TLV 数据(我得到了这个样本 TLV 数据 here
6F2F840E325041592E5359532E4444463031A51DBF0C1A61184F07A0000000031010500A564953412044454249548701019000
当我在 TLVUtil 中检查此 TLV 时,我以可读格式获取某些标签中的数据(如此处的标签 50)。
在我的申请中我能得到的最接近的是:
Tag Value
50 56495341204445424954
4F A0000000031010
61 4F07A0000000031010500A56495341204445424954870101
6F 840E325041592E5359532E4444463031A51DBF0C1A61184F07A0000000031010500A56495341204445424954870101
84 325041592E5359532E4444463031
87 1
90
A5 BF0C1A61184F07A0000000031010500A56495341204445424954870101
BF0C 61184F07A0000000031010500A56495341204445424954870101
我想知道是否有任何方法可以识别某些需要从十六进制转换为字符串的标签,或者 .Net 中是否有任何可用的 TLV 解析器和解码器可以复制 TLVUtil工具。
最佳答案
EMV 标签的完整列表,可在 EMVCo 4.3 规范手册 3 中找到 - 您可以从这里下载 - https://www.emvco.com/download_agreement.aspx?id=654 数据的表示方式因字段而异。检查“附件 A - 数据元素字典”
4.3 节中提到了有关编码的详细信息
阅读这两个部分,您的问题就解决了。
关于c# - 解码 EMV TLV 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36740699/