我同时拥有Visa Electron和Debit Mastercard,但每当我尝试使用各自的AID A0000000032010和A0000000041010选择应用程序时,我收到6A82响应意味着找不到该文件。
这是我的两个选择的代码段
//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};
我有什么问题吗?
答案 0 :(得分:0)
我回顾过去我用过的一些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};