Я тестирую несколько неизвестных смарт-карт, которые, как я знаю, соответствуют ISO7816-4. Карты, которые я собрал, принадлежат одному и тому же оператору, и все они могут работать взаимозаменяемо.Javax SmartCardIO Weird Error 6700 Length Неверный
Я отправлял команды APDU на карту через библиотеку Java SmartCardIO и считыватель ACR122U, а также с помощью телефона Android через библиотеку ISODEP.
На моем устройстве Android, я послал следующее APDU и все работает отлично,
tag.transceive(new byte[] {(byte)0x80, (byte)0x30, (byte)0x03, (byte)0x00, (byte)0x00, (byte)0x00 })
Все 10 из 10 карт работать находку.
На моем рабочем столе у меня есть следующий код:
answer = channel.transmit(new CommandAPDU(new byte[] { (byte)0x80, (byte)0x30, (byte)0x03, (byte)0x00, (byte)0x00 }));
этот код отлично с 3 из 10 карт работает, другие 7 я получаю неправильную ошибку 6700 длины. Для остальных 7 я должен использовать этот код,
answer = channel.transmit(new CommandAPDU(new byte[] { (byte)0x90, (byte)0x32, (byte)0x03, (byte)0x00, (byte)0x00,(byte)0x00, (byte)0x00 }));
Я также не могу использовать этот код для указанных выше 3-х карт, я получаю ошибку неправильной длин.
Я не могу понять, в чем проблема, почему добавление дополнительных 2 нулевых байтов заставляет его работать? Я не сталкиваюсь с этой проблемой на своем устройстве Android, все карты работают только с одной строкой.