簡體   English   中英

如何將 apdu 命令傳遞給命令 apdu 功能

[英]how to pass apdu command to command apdu function

您好,我是 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));

有多種方法可以做到這一點:

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

閱讀有關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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM