【问题标题】:Can't select Application in EMV card using valid AID无法使用有效 AID 在 EMV 卡中选择应用程序
【发布时间】:2015-01-09 10:10:50
【问题描述】:

我同时拥有 Visa Electron 和借记万事达卡,但是每当我尝试使用各自的 AID A0000000032010 和 A0000000041010 选择应用程序时,我都会收到 6A82 响应,表示找不到文件。

这是我的代码 sn-p 用于两个选择

//SELECTING VISA ELECRON CARD APPLICATION
byte[] ApduCMDVC = new byte[] {  (byte) 0x00, (byte) 0xA4, (byte) 0x04,
            (byte) 0x00, (byte) 0x0E,
            (byte) 0x41, (byte)0x30, (byte) 0x30, (byte) 0x30,
            (byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,
            (byte) 0x33,(byte) 0x32,(byte) 0x30,(byte) 0x31,(byte) 0x30};

//SELECTING MASTER CARD APPLICATION
byte[] ApduCMDMC = new byte[] {  (byte) 0x00, (byte) 0xA4, (byte) 0x04,
            (byte) 0x00, (byte) 0x0E,
            (byte) 0x41, (byte)0x30, (byte) 0x30, (byte) 0x30,
            (byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,(byte) 0x30,
            (byte) 0x34,(byte) 0x31,(byte) 0x30,(byte) 0x31,(byte) 0x30};

会不会是我做错了什么?

【问题讨论】:

  • 您好,您如何发布 APDU?爪哇?贾卡尔?另外,您能否发布一个代码 sn-p,您所显示的只是 AID 的字节数组。
  • 嗨 Greycon,是的,我正在使用 Java,我正在为 android 开发一个移动 pos 应用程序,我有一个来自读卡器制造商的 sdk,它将 apdu 命令发送到读卡器,所以我是基本上将 apdu 命令作为字节数组发送。我之前粘贴的 sn-p 来自我的代码,唯一缺少的是向读卡器发送请求的方法。
  • 好的,我有一些 Java 代码可以做到这一点,它已经有几年的历史了 - 我去打猎时待机。我想你选择了“Payfile.sys”还是先选择什么?
  • 非常感谢 Greycon,我期待代码。我跳过了 1PAY.SYS.DDF01 的选择,因为有些卡,尤其是 Visa Electron 不支持该应用程序。因此,我将直接通过 AID 进行选择。这会是个问题吗?

标签: apdu emv


【解决方案1】:

我回顾了过去用于此的一些 C++ 代码,我相信您的问题是您以 ASCII 格式发送 AID,而不是二进制格式。这是我使用的 C++ 字节数组:

static  BYTE    selectAIDCmd[] = {0x00, 0xA4, 0x04, 0x00, 0x07, 0xA0, 0x00, 0x00, 0x00, 0x04, 0x10, 0x10 };

所以,你需要这个:

    byte[] ApduCMDMC = new byte[] {  (byte) 0x00, (byte) 0xA4, (byte) 0x04,
        (byte) 0x00, (byte) 0x07,
        (byte) 0xA0, (byte)0x00, (byte) 0x00, (byte) 0x00, (byte)0x03,(byte) 0x20,(byte) 0x10};

【讨论】:

  • 我不这么认为 Greycon,因为我在发送之前将十六进制值转换为字节。
  • 这就是我让你发布代码的原因。我猜不出你在做什么?我发布的字节数组来自一个工作 C++ 程序。并且“将十六进制值转换为字节”毫无意义。您能否将代码发布到并包括 APDU 发送调用?
  • 哦,你的意思是:"(byte)0x30" - 这只是告诉编译器这是一个单字节,但它的值仍然是 Hex 30。需要的是 (byte) 0x00。完全不同的动物。
  • 试试吧,相信我。对于您的 AID,不要使用 0x41、0x30 等,而是使用 0xA0、0x00 等。它会起作用。
  • 嗨,Jide,你能编辑你原来的帖子并添加修改后的字节数组吗?我会尝试对我的定义做同样的事情......待机,我们会让它工作的。
猜你喜欢
  • 1970-01-01
  • 2020-03-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-25
  • 2022-01-11
  • 2019-02-18
相关资源
最近更新 更多