我正在开发一个支持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解析器和解码器。
发布于 2016-04-20 13:07:31
只有少数标记需要转换为字符串。通常,在POS屏幕上放置的标签都是个性化的,相当于可读字符串。
您必须知道哪些标记可以转换。
发布于 2016-04-20 17:30:50
EMV标签的完整列表,并可在EMVCo 4.3规范书3中找到-您可以从这里下载- agreement.aspx?id=654如何表示不同字段的数据。查阅“附件A-数据要素词典”
有关编码的详情,请参阅第4.3节。
阅读这两部分,并解决你的问题。
发布于 2016-04-21 05:10:31
在我看来,通过编程你可以识别出,
标记为一个字节( 5A -潘号)或包含两个字节( 5F20 -卡片持有人名称),以及
长度为1字节或2字节
标记是原始的或构造的。更多您可以阅读这里
如果您知道这个列表,您可以得到一些有用的这里,它定义了您要寻找的标记的格式。
在这里,您可以硬编码格式,因为它是很好的定义。
希望能帮上忙。
https://stackoverflow.com/questions/36740699
复制相似问题