java - EMV TLV Java 函数

标签 java function emv tlv

我正在寻找一种使用 Java 翻译 EMV 响应的方法,就像使用此在线选项一样:

http://www.emvlab.org/tlvutils/

你把像这样的 EMV 响应放在哪里:

6f3a8407a0000000031010a52f500b56495341204352454449548701015f2d086573656e707466729f12074352454449544f9f1101019f38039f1a02

它会完美地向您展示一切,我开始自己做一些事情,但后来我意识到也许我们可以有两个 9F38(PDOL) 字符串,而不是两个相同的标签,因为我知道这是不可能的,但也许标签结束的值(value)在 9F 中,下一个标签的开头是 38,这会给我一个错误……现在我提到它,这可能吗?因为这是我停止执行自己的功能的主要原因之一。

你们中有人已经编写了一个函数来执行此操作吗?

谢谢!

最佳答案

https://github.com/binaryfoo/emv-bertlv应该可以解决问题。

使用您的示例,以下代码:

List<DecodedData> decoded = new RootDecoder().decode("6f3a8407a0000000031010a52f500b56495341204352454449548701015f2d086573656e707466729f12074352454449544f9f1101019f38039f1a02", "EMV", "constructed");
new DecodedWriter(System.out).write(decoded, "");

将输出:

[6F (FCI template)] 8407A0000000031010A52F500B56495341204352454449548701015F...1A02
[84 (dedicated file name)] A0000000031010
[A5 (FCI proprietary template)] 500B56495341204352454449548701015F2D086573656E707466729F...1A02
  [50 (application label)] VISA CREDIT
  [87 (application priority indicator)] 01
  [5F2D (language preference)] esenptfr
  [9F12 (application preferred name)] CREDITO
  [9F11 (issuer code table index)] 01
  [9F38 (PDOL - Processing data object list)] 9F1A02
    9F1A (terminal country code) 2 bytes

关于java - EMV TLV Java 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16369452/

相关文章:

Java 类未找到异常

java - 如何限制动态体不互相反弹(但仍然碰撞)?

java对功能模块的访问控制

c - 如何在c中从ingenico设备获取apdu命令日志?

java - 在需要新的 API 版本之前,我可以对云端点(应用程序引擎)返回对象进行哪些更改? (以及如何做到的)

javascript - 当函数作为另一个函数的结果创建时如何比较该函数

Python - 在一行中打印多个函数

javascript - 单击 ul > li 仅在第一次有效

smartcard - 我可以在没有读卡器和实体卡的情况下使用 Javacard 吗?

smartcard-reader - 使用 AID 选择 EMV 应用程序