2015-10-19 160 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