2015-10-19 81 views
0

喜是新来的Java卡我有以下数据如何通过APDU命令APDU命令功能

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)); 

回答

0

看,有一个丢失的方式来做到这一点:

案例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 CommandAPDUCardChannel

案例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

+0

谢谢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

+0

要选择Applet中的任何文件,首先必须通过AID选择该Applet。所以在选择文件'EF08'之前,你是否先选择了你的Applet?但是,如果文件'EF08'不存在于你的Applet中,你肯定会得到一个错误代码'6A82'。 –

+0

rakeb.void yes选择了Applet AID之后应该如何使用上面的说明来选择文件请协助我需要学习java卡 – MorganM