【问题标题】:Read write data in SLE4442 smart card with java commandAPDU?使用 java commandAPDU 读写 SLE4442 智能卡中的数据?
【发布时间】:2015-08-06 08:27:15
【问题描述】:

我想在 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 数据但它没有收到

我也在读写命令之前使用选择命令

选择命令是

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

有没有人在 SLE4442 智能卡中读取和写入正确的 java 代码?

【问题讨论】:

  • 因为APDU的命令是相同的java和c++
  • 您是否已经在使用任何语言的智能卡
  • @BoPersson 不,我不使用智能卡,这是我第一次有任何解决方案,而不是在 java 中帮助我

标签: java smartcard apdu


【解决方案1】:

与使用存储卡相关的 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 表示“英飞凌 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,这可能是个问题。

【讨论】:

  • 我也用它在 SLE 4442 卡中写入数据 使用 ACR 读卡器,但在卡内写入数据不成功 有任何完整代码有助于首先写入 123 之类的数字,然后成功读取这些数字我从去年开始尝试这个,所以请帮助我
  • 你好,如果我们使用这张卡,我们需要别针
  • @BoPersson 如果我们使用这张卡,我们是否需要密码,如果您有完整的 java 代码,请提供我从去年开始尝试但没有找到解决方案
  • @Michael Roland 请帮帮我这个话题,我去年正在工作,但没有解决
  • @RubyBhullar 您找到了如何使用 ACR 阅读器写入 SLE 4442 购物车的解决方案吗?
猜你喜欢
  • 2011-04-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-24
相关资源
最近更新 更多