我想在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代码可以读写?
答案 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
,这可能是一个问题。