我正在开发支持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中是否有可以复制TLVUtil工具的TLV解析器和解码器。

最佳答案

只有少数标记需要转换为字符串。通常,放置在POS屏幕上的标签以等同于可读字符串的十六进制表示。


5F20:持卡人姓名
50:应用标签。
5F2D:语言首选项


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

关于c# - 解码EMV TLV数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36740699/

10-09 01:18