看,有一个丢失的方式来做到这一点:
案例1:(不认识)
int cla = 0x00;
int ins = 0xA2;
int p1 = 0x00;
int p2 = 0x00;
//int LC = 0x08;'
byte[] data = new byte[] {(byte) 0xEF, (byte) 0x08};
int le = 0x0D;
ResponseAPDU respApdu = channel.transmit(
new CommandAPDU(cla, ins, p1, p2, data, le));
案例2:(赏识)
byte[] apdu = new byte[] {(byte) 0x00, (byte) 0xA2, (byte) 0x00, (byte)
0x00, (byte) 0x02, (byte) 0xEF, (byte) 0x08, (byte) 0x0D};
ResponseAPDU respApdu = channel.transmit(
new CommandAPDU(apdu));
查看更多about CommandAPDU和CardChannel。
案例3:(主要用于道路)
String apdu = "00A2000002EF080D"; //also u can append strings into apdu
ResponseAPDU respApdu = channel.transmit(
new CommandAPDU(toByteArray(apdu)));
你需要一个助手功能:
import javax.xml.bind.DatatypeConverter;
public static byte[] toByteArray(String s) {
return DatatypeConverter.parseHexBinary(s);
}
注意:你表现的例子APDU值,LC '08'
指数据长度将为8个字节,但您的数据字段只有2个字节长。所以再次检查LC
。
谢谢rakeb.void这是发送的实际命令我想选择文件,并得到这个错误“6A 82”这意味着文件没有找到,这是我要发送到选择文件的命令int cla = 0x00 ; int ins = 0xA4; int p1 = 0x04; int p2 = 0x00; byte [] data = new byte [] {(byte)0xEF,(byte)0x08}; int le = 0x00;如何使用上述命令选择文件? – MorganM
要选择Applet中的任何文件,首先必须通过AID选择该Applet。所以在选择文件'EF08'之前,你是否先选择了你的Applet?但是,如果文件'EF08'不存在于你的Applet中,你肯定会得到一个错误代码'6A82'。 –
rakeb.void yes选择了Applet AID之后应该如何使用上面的说明来选择文件请协助我需要学习java卡 – MorganM