你好,我是java卡的新手,我有以下数据
CLA '00'
INS 'A2' nb not real value
P1 '00'
P2 '00'
LC '08'
Data In 'EF08'
Le '0D'如何将上述指令写入字节并发送到此函数?我需要得到9000作为成功的回应和数据。
ResponseAPDU respApdu = channel.transmit(
new CommandAPDU(cmd));发布于 2015-10-19 14:43:59
有多种方法可以做到这一点:
案例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));阅读更多关于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。
https://stackoverflow.com/questions/33215341
复制相似问题