записать данные на смарт-карту в файле StdData - PullRequest
0 голосов
/ 04 июня 2019

Я создал файл на смарт-карте с помощью этой команды apdu:

String apdu = "90CD00000700000E0EA0000000"; channel.transmit(new CommandAPDU(DatatypeConverter.parseHexBinary(apdu)));

файл успешно создан, однако я не могу записать данные в этот файл, я пыталсяэта команда: String apdu = "903D00003B00000000000034" + data + "00";

, но она не удалась с ответом: sw1 91 sw2 BE (Out of Граница)

В чем проблема с этим файлом?

1 Ответ

1 голос
/ 05 июня 2019

Команды DESFire используют порядок байтов с прямым порядком байтов .

Ваша длина (000034) интерпретируется как 3407872 байта.Вам нужно использовать 340000 для кодирования 52.

Попробуйте написать более короткое время, например: 903D00000F00000000080000112233445566778800, чтобы написать '1122334455667788' ...

Удачи!

РЕДАКТИРОВАТЬ>

Настройка длин в P3 APDU и WriteData для более длинных записей, например:

  • 903D0000 17 00000000 100000 00112233445566778899AABBCCDDEEFF00

Обратите внимание, что DESFire имеет ограничение размера кадра, которое ограничивает число байтов, которые могут быть записаны в одном обмене командами (для команды DESDire WriteData в оболочке ISO это приблизительно 47 байтов данных).Вам нужно выполнить несколько операций записи со смещением (помните, что в кодировке litte-endian) или использовать механизм ДОПОЛНИТЕЛЬНОЙ КАДРЫ - см. Руководство DESFire (последнее немного быстрее).

...