使用 java 命令 APDU 读写 SLE4442 智能卡中的数据?

Read write data in SLE4442 smart card with java commandAPDU?

我想读写SLE4442智能卡中的数据 我有 ACR38U-i1 智能卡 reader

写我用这个命令APDU

byte[] cmdApduPutCardUid = new byte[]{(byte)0xFF, (byte)0xD0,  (byte)0x40,(byte)0x00,  (byte)4,(byte)6,(byte)2,(byte)6,(byte)2};

以及读取数据

byte[] cmdApduGetCardUid = new byte[]{(byte)0xFF,(byte)0xB0,(byte)0x40,(byte)0x00,(byte)0xFF};

两者都执行并发送 SW= 9000 但没有数据收到响应APDU 就像我写了 6262 数据但它没有收到

我也在写和读命令之前使用Select命令

select命令是

byte[] cmdApduSlcCardUid = new byte[]{(byte)0xFF,(byte)0xA4,(byte)0x00,(byte)0x00,(byte)0x01,(byte)0x06};

谁有合适的 java 代码来读写 SLE4442 智能卡?

与使用存储卡相关的 APDU 命令对于不同的读者和实现的支持可能不同。这是一个 example for OmniKey reader.

查看您的 ACR reader specification 并使用特定的 Pseudo-APDU 命令与 SLE 4442 一起工作。

针对您的问题:

4.6.1 SELECT_CARD_TYPE"FF A4 00 00 01 06",其中数据中的0x06表示"Infineon SLE 4432 and SLE 4442" .

4.6.2 READ_MEMORY_CARD"FF B0 00 [Bytes Address] [MEM_L]",其中

  • [Bytes Address]:是内存卡的内存地址位置
  • [MEM_L]:要从内存卡读取的数据长度

4.6.5 WRITE_MEMORY_CARD: "FF D0 00 [Bytes Address] [MEM_L] [Data]"

  • [Data]: 待写入内存卡的数据

您使用了 P1 = 0x40,这可能是个问题。