问题描述
我正在尝试使用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。