2015-10-29 4 views
-1

Я пытаюсь разработать приложение для Android и использовать эмуляцию карт на основе хоста, и я смущен сообщением APDU.Как создать сообщение APDU

Я пытался следовать нескольким примерам (2 внизу), но до сих пор не знаю, как отформатировать собственное сообщение APDU. Я разрабатываю приложение HCE и приложение для чтения, поэтому я предполагаю, что это необходимо сделать для обоих.

С указанием и пример членской карточки розничного магазина, номер членства, который необходимо передать, как можно создавать сообщения APDU?

http://www.slideshare.net/ChienMingChou/hce-tutorialv-v1 http://www.javaworld.com/article/2076450/client-side-java/how-to-write-a-java-card-applet--a-developer-s-guide.html?page=3

ответ

1

Прежде всего пары команд APDU/ответ - только байт двоичных блоков, нет никакой магии, кроме иногда используется криптография.

Чтобы узнать команды APDU и ответы, пожалуйста, посмотрите в ISO 7816 спецификации:

  • Часть 3: описывает содержание и классы для APDU команд и Свои замечания
  • Часть 4: (и некоторые другие) описывает Основные команды.

Чтобы узнать глубже о платежных карт вы должны смотреть в EMV спецификации.

Нельзя сказать, что упомянутые здесь спецификации просты для понимания, но если вы чувствуете себя сильным, чтобы разрабатывать для карт, эти спецификации лучше знать или держать их в ваших руках для разъяснений и передовой практики.

Также обратите внимание, что производители карт могут реализовать собственные команды APDU, а также приложения для Java-карт. В этом случае вы должны изучить конкретные руководства по использованию карт или карт.

В ваших карточках розничного магазина могут использоваться стандартные APDU от ISO или от производства карт или выполнять собственные (javacard) команды. Не смотря на спецификацию своей розничной карты или анализируя трассировки APDU, нелегко сказать, какие команды действительно делают.

0

Просто создайте строку с помощью команды APDU, запустите ее через функцию, чтобы преобразовать ее в массив байтов и вернуть ее. Ничего сумасшедшего.

Здесь перечислены функции для перехода к/из строки/байта [].

public static String byteArrayToHex(byte[] bytes) { 
    StringBuilder sb = new StringBuilder(); 
    for (byte b : bytes) { 
     sb.append(String.format("%02X", b)); 
    } 
    return sb.toString(); 
} 

public static byte[] hexToByteArray(String hexString) { 
    int len = hexString.length(); 
    byte[] data = new byte[len/2]; 
    for (int i = 0; i < len; i += 2) { 
     data[i/2] = (byte) ((Character.digit(hexString.charAt(i), 16) << 4) 
       | Character.digit(hexString.charAt(i + 1), 16)); 
    } 
    return data; 
} 

Насколько ваш точное использование случай отправки номера участника, я не уверен, что формат этой команды, но если у вас есть формат, что строка будет выглядеть, использовать функции полезности здесь построить их.

 Смежные вопросы

  • Нет связанных вопросов^_^