Ola*_*obi 7 smartcard javacard
我正在编写一个智能卡应用程序,并在成功选择带有AID的应用程序后,发送获取处理选项
我得到6E 00作为响应 - 无效的CLA命令.这是发送命令并接收响应的代码的一部分:
ResponseAPDU rapdu = sendCommand(new byte[]{(byte)0x80, (byte)0xA8, (byte)0x00, (byte)0x00, (byte)0x02, (byte)0x83, (byte)0x00, (byte)0x00});
private ResponseAPDU sendCommand(byte[] apdu) throws CardException{
CommandAPDU capdu = new CommandAPDU(apdu);
ResponseAPDU rpd = channel.transmit(capdu);
return rpd;
}
Run Code Online (Sandbox Code Playgroud)
我正在使用相同的命令使用Jaccal库读取卡片并且它工作正常,但由于它使用了外部dll文件,因此jaccal不适合我的应用程序.我不知道为什么它会给我这种回应.
许多博客/论坛条目讨论了这个问题:
在我看来,VISA卡似乎是"宽容的",但万事达卡不是(6E 00).注意,与建议相反,升级到Java 7并没有解决它.您可能正在查看sun.security.smartcardio.t0GetResponse解决方案并处理响应.
我做了以下工作让它工作:
System.setProperty("sun.security.smartcardio.t0GetResponse", "false");
Run Code Online (Sandbox Code Playgroud)
使用GET RESPONSE处理响应(参见EMV 4.3第1册,第9.3.1.3节).此链接也很有用:
Sac*_*n D -1
基本上这个错误是因为您传递的命令不匹配。只需检查(0x80)第一个字段是正确还是错误。在卡中,卡操作系统检查第一个字段的预期值,如果不匹配,则会发送 CLA 未找到异常表示 6E 00 错误代码。您需要提供有关您正在做什么的更多详细信息 - 什么卡、版本、GP 合规性、现有卡的列表您正在使用哪些技术。您使用哪种语言进行工作。(.net 或 java)以便我可以帮你。
| 归档时间: |
|
| 查看次数: |
2656 次 |
| 最近记录: |