看,有一個丟失的方式來做到這一點:
案例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