【发布时间】:2016-03-30 00:49:43
【问题描述】:
我正在开始一个新项目,我是使用 EMV 阅读器和 Javax SmartCardIO 的新手。
我有每种卡的 RID 列表,但是我唯一可以在不知道卡类型的情况下访问的是 ATR,我想知道是否有办法获取 RID 或卡类型仅此信息,欢迎提供任何帮助。
提前致谢!
编辑:
我尝试用这种方法执行 select PSE 命令:
public static byte[] selectPSE(CardChannel channel) throws CardException {
byte[] selectPSE = {(byte)0x00, (byte)0xA4, (byte)0x04, (byte)0x00, (byte)0x0E, (byte)0x31, (byte)0x50, (byte)0x41, (byte)0x59, (byte)0x2E, (byte)0x53, (byte)0x59, (byte)0x53, (byte)0x2E, (byte)0x44, (byte)0x44, (byte)0x46, (byte)0x30, (byte)0x31};
CommandAPDU command = new CommandAPDU(selectPSE);
ResponseAPDU response = channel.transmit(command);
System.out.println(response.getBytes());
return response.getBytes();
}
但是,它只适用于 AMEX 和 Visa,我在两张 MasterCard 卡(信用卡和借记卡)上收到错误 6a82。
这看起来很奇怪,据我所知,所有主要的发卡机构(包括 MasterCard)都使用 1PAY.SYS.DDF01,我可以通过 AID 的 Try and Error 获得我想要的信息,但我不这么认为是最好的解决方案。
【问题讨论】:
-
您是否要读取EMV卡数据,请详细说明您的目的。
-
是的,我正在尝试创建一个应用程序来识别和显示智能卡中的所有数据。