2017-04-06 82 views
-1

时虽然使用apdu.sendBytesLong()函数形式的APDU命令从Java卡发送数据发送127个字节作为响应APDU命令,我能够发送127字节数据作为响应,但128字节数据给出错误代码6f00(SW_UNKNOWN)。 为什么会发生这种情况,任何人都可以提出解决方法,而不需要将数据分成两个apdu命令。无法从Java卡发送128点字节的数据,但可以使用sendBytesLong()

le = apdu.setOutgoing(); 
      if(le != 128) 
       ISOException.throwIt(ISO7816.SW_WRONG_LENGTH); 
apdu.setOutgoingLength((byte)le); 
apdu.sendBytesLong(mod_PkAIKR,(short)0, le); 

其中mod_PkAIKR是128字节的字节数组。

谢谢

+0

你怎么能指望我们找出不透露你的代码的相关部分?并通过有关我的意思是,你处理APDU,并与卡的通信APDU跟踪Java卡代码的一部分。 –

+0

@MichaelRoland不需要代码,但我仍然添加了。 –

+0

当然,你需要发布的代码(见http://stackoverflow.com/help/mcve)如果您希望我们能够找出为什么你的代码* *不起作用。 –

回答

0

变化 apdu.setOutgoingLength((byte)le);apdu.setOutgoingLength(le);

  1. 参数类型的API apdu.setOutgoing()的是短暂的,它没有需求类型转换。
  2. 如果您将转换为字节,参数值将成为负值。 (byte) 128的值是-128
相关问题