2015-10-21 7 views
1

Я новичок в технологии Java Card, и я только начал читать об этом. Я хочу создать смарт-апплет для своей карты. Моя цель заключается в том, чтобы он работал на бесконтактной карте. Я загрузил файл jar (GlobalPlatformPro) для установки файла * .cap на карточке с помощью NFC Card Reader ACR122. Но, к сожалению, у меня есть ошибка:Установка апплета Java Card с использованием ACR122

Exception in thread "main" java.lang.IllegalArgumentException: apdu must be at least 2 bytes long 
     at javax.smartcardio.ResponseAPDU.check(ResponseAPDU.java:73) 
     at javax.smartcardio.ResponseAPDU.<init>(ResponseAPDU.java:67) 
     at sun.security.smartcardio.ChannelImpl.transmit(ChannelImpl.java:91) 
     at pro.javacard.gp.GlobalPlatform.select(GlobalPlatform.java:203) 
     at pro.javacard.gp.GPTool.main(GPTool.java:334) 

Мой первый вопрос: можно ли написать апплет с помощью этого читателя? А во-вторых, как вы порекомендовали бы это?

+0

Какую карточку вы используете в любом случае? На любой карте нет глобальной платформы. –

+0

Привет, @vojta Я знаю, что для чтения апплета не требуется считыватель карт hava. Я хотел сказать, что моя цель - написать файл * .cap на реальной карте. Я только что создал простой проект Java Card. Ошибка была брошена, когда я пытался установить апплет на карту. Я подключил устройство чтения ACR122 к своему компьютеру, начал работу с терминалом и выполнил команду: «java -jar gp.jar -install applet.cap» Я использую карты Mifare 1K, которые были в комплекте с считывателем. Должен ли я купить другую карту? – Krystian

+1

@ Krystian да, покупка другой карта. Mifare 1K - это простое хранилище данных, поддержка Java-карты отсутствует. Mifare не программируется, он не может запускать какой-либо пользовательский код. Например, посмотрите на J2A081 от NXP. Или любую SIM-карту от Gemalto. – vojta

ответ

0

Проблема заключается в том, что вы пытаетесь загрузить апплет на карту, которая не поддерживает Глобальную платформу или Java-карту. Mifare 1K - это простое хранилище данных, оно может хранить некоторые данные, которые вы пишете, используя свой собственный API. Он не может запускать какие-либо апплеты, эта карта не «умна».

В сообщении об ошибке говорится, что ответ APDU короче, чем ожидалось. Ответы Mifare не соответствуют ISO7816, статус ответа состоит всего из одного байта, хотя ISO7816 ожидает как минимум двухбайтовое слово состояния.

Ищите другую карточку. Он должен поддерживать JCOP, это ключевое слово для поиска.

+0

Спасибо за вашу поддержку. Мне уже удалось установить апплет на виртуальном устройстве (поставляется с SDK Java Card). Не могли бы вы предоставить мне какой-нибудь ценный учебник по написанию апплетов для Java-карты? – Krystian

+0

Посоветуйте вам несколько полезных уроков: 1. http://ftp.cis.nctu.edu.tw/csie/Documents/Java/javacard/AppletDevelopersGuide.pdf 2.http: //imcs.dvfu.ru/lib.int /docs/Hardware/Smart%20Card%20Handbook.pdf 3. http://javacardos.com/javacardforum/viewforum.php?f=31 Надеюсь, что эта помощь – grace

+0

Javacard applet demo: http://javacardos.com/javacardforum/viewtopic .php? F = 31 & T = 114 – grace