使用Java smartcardio函数发送APDU命令以将数据写入SmartCard读取器

问题描述

我正在尝试使用java smartcardio函数将数据写入HID Omnikey 5122设备中的非接触式卡。

我需要插入卡中的数据是{00 01 02 03}

我正在尝试通过channel.transmit函数发送的APDU命令是{FF D6 00 04 04 00 01 02 03} 其中:

  • FF是CLS
  • D6是INS
  • 00是P1
  • 04是P2
  • 04是要更新的字节数
  • 00 01 02 03是我需要插入的数据。

我无法通过以下功能正确构建APDU命令。有人可以帮我弄这个吗。我正在使用java smartcardio库中可用的函数

ResponseAPDU respApdu = channel.transmit(           
                          new CommandAPDU(0xFF,0xD6,0x00,0x04,new byte[] {(byte) 0x00,(byte) 0x01,(byte)0x02,(byte)0x03}));

我收到语法错误,例如构造函数命令包含无效参数。

解决方法

您似乎正在尝试发送UPDATE BINARY APDU以更新偏移量4处的透明文件(这是您在P1-P2中提供的)。您必须使用00h的CLA字节(如果该文件操作不需要使用安全消息系统)。 由于P1-P2在您的情况下未指定短文件标识符,因此您当前选择的文件具有

  • 与READ / UPDATE BINARY命令兼容
  • 文件大小> = 9 byres。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...