使用java commandAPDU读取SLE4442智能卡中的写入数据?

时间:2015-08-06 08:27:16

标签: java smartcard apdu

我想在SLE4442智能卡中读写数据 我有ACR38U-i1智能卡读卡器

对于写入,我使用此命令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 但是没有一个数据在responseAPDU中接收 就像我写6262数据但没有收到

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

select命令是

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

在SLE4442智能卡中是否有任何正确的java代码可以读写?

1 个答案:

答案 0 :(得分:0)

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和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,这可能是一个问题。