解码EMV TLV数据

时间:2016-04-20 10:16:11

标签: c# .net emv verifone tlv

我正在开发支持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

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

4 个答案:

答案 0 :(得分:5)

Complete list of EMV tags and are available in EMVCo 4.3 specification book 3 - 
you can download from here - https://www.emvco.com/download_agreement.aspx?id=654
How data is represented differs from field to field. Check Annex A
 Data Elements Dictionary


Details on encoding is mentioned in section 4.3

Read both the sections and your problem solved.

答案 1 :(得分:1)

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

  • 5F20 :持卡人姓名

  • 50 :申请标签。

  • 5F2D :语言偏好

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

答案 2 :(得分:0)

在我看来,通过编程方式,您可以识别出类似的内容,

标签是一个字节(5A - Pan编号)或它包含2个字节(5F20 - CARD HOLDER NAME),AND

长度为1字节或2字节AND

标签是原始的或构造的。您可以阅读更多内容Here

如果您知道列表,则可以获得有用的内容Here,它会定义您要查找的标记格式。

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

希望它有所帮助。

答案 3 :(得分:0)

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

很容易检查出来