我为java卡2.2.1编写了一个代码,我用JCIDE测试它。 我在方法Setoutgoinglength()
中得到错误 public void getoutput(APDU apdu)
{
byte [] buffer = apdu.getBuffer();
byte hello[] = {'H','E','L','L','O',' ','W','O','R','L','D',' ', 'J','A','V','A',' ','C','A','R','D'};
short le = apdu.setOutgoing();
short totalBytes = (short) hello.length;
Util.arrayCopyNonAtomic(hello, (short)0, buffer, (short)0, (short)totalBytes);
apdu.setOutgoingLength(totalBytes);
apdu.sendBytes((short) 0, (short) hello.length);}
答案 0 :(得分:0)
6CXX
表示您的Le不等于正确的响应数据长度(XX等于正确响应数据的长度)。 6C15
具体表示要使用的正确Le应为0x15
。
发生的事情是你的Le字段是0x00
(卡实际上被十进制形式解释为256)但你使用了totalBytes
,其值为0x15
,作为apdu.setOutgoingLength()
的参数,不等于256。
要发送的正确APDU是00 40 00 00 15