2

我正在开发一个支持 EMV 卡的 POS 应用程序。我能够从 TLV 中的 Verifone MX 读卡器读取卡数据,但在将 TLV 数据解码为可读数据时遇到问题。

我能够将数据拆分为 TLV 标签及其值。结果值是十六进制而不是解码文本。

例子:

这是一个示例 TLV 数据(我在这里得到了这个示例 TLV 数据

6F2F840E325041592E5359532E4444463031A51DBF0C1A61184F07A0000000031010500A564953412044454249548701019000

当我在TLVUtil中检查此 TLV 时,我会以可读格式获取某些标签中的数据(如此处的标签 50)。

我可以在我的应用程序中获得的最接近的是:

Tag Value
50  56495341204445424954
4F  A0000000031010
61  4F07A0000000031010500A56495341204445424954870101
6F  840E325041592E5359532E4444463031A51DBF0C1A61184F07A0000000031010500A56495341204445424954870101
84  325041592E5359532E4444463031
87  1
90  
A5  BF0C1A61184F07A0000000031010500A56495341204445424954870101
BF0C 61184F07A0000000031010500A56495341204445424954870101

我想知道是否有任何方法可以识别需要从十六进制转换为字符串的某些标签,或者.Net 中是否有可以复制TLVUtil工具的 TLV 解析器和解码器。

4

4 回答 4

5

EMV 标签的完整列表,可在 EMVCo 4.3 规范书 3 中找到 - 您可以从这里下载 - https://www.emvco.com/download_agreement.aspx?id=654 数据的表示方式因字段而异。检查“附件 A - 数据元素字典”

编码细节在 4.3 节中提到

阅读这两个部分并解决您的问题。

于 2016-04-20T17:30:50.777 回答
1

只有少数标签需要转换为字符串。通常放在 POS 屏幕上的标签以十六进制等效于可读字符串进行个性化。

  • 5F20 : 持卡人姓名

  • 50 :应用标签。

  • 5F2D:语言偏好

您必须知道可以转换哪些标签。

于 2016-04-20T13:07:31.843 回答
0

以 6F 开头的数据是在 SELECT 命令之后由 EMV 卡响应的文件控制信息 (FCI)。此视频中有一个示例也已解码和解释。 https://youtu.be/iWg8EBhsfjY

很容易检查出来

于 2017-06-11T14:59:35.693 回答
0

在我看来,以编程方式你可以识别出类似的东西,

标签为 1 个字节(5A - Pan number)或包含 2 个字节(5F20 - CARD HOLDER NAME),并且

长度为 1 字节或 2 字节 AND

标签是原始的或构造的。更多你可以在这里阅读

如果你知道这个列表,你可以在这里得到一些有用的东西,它定义了你正在寻找的标签的格式。

在这里,您可以对格式进行硬编码,因为它定义明确。

希望能帮助到你。

于 2016-04-21T05:10:31.520 回答