Я пытаюсь установить буфер CommandAPDU с массивом байтов. Однако, если длина > 7, выдается следующая ошибка:
Исключение в потоке «основной» java.lang.IllegalArgumentException: недопустимый APDU: длина = 8, b1 = 1 в javax.smartcardio.CommandAPDU.parse(CommandAPDU.java:318) в javax.smartcardio.CommandAPDU.(CommandAPDU.java:98 ) в терминале.Main.main(Main.java:78)
Мой код:
byte terminal = 0x00;
byte instruction = 0x01;
byte [] msg = {0x01,0x00,0x01,0x00};
byte [] fullmsg = new byte[msg.length + 4];
System.arraycopy(new byte []{terminal}, 0, fullmsg, 0, 1);
System.arraycopy(new byte [] {instruction}, 0, fullmsg, 1, 1);
System.arraycopy(new byte [] {0,0}, 0, fullmsg, 2, 2);
System.arraycopy(msg, 0, fullmsg, 4, msg.length);
CommandAPDU cmdapdu = new CommandAPDU(fullmsg);
Кто-нибудь может мне помочь?
offset
(и++
или+= 2
) 2. используйте константы для определенных значений байтов (также для использования в ответе vlp) и 3. пожалуйста напишите комментарий о том, что делает строка кода, потому что в настоящее время непросто извлечь какой-либо смысл из кода. И код не удался, потому что вы забыли записать пятый байтLc
, который кодирует длину данных команды, известный какNc
. - person Maarten Bodewes   schedule 04.07.2018