SLE4428智能卡存在问题

时间:2012-12-11 00:22:18

标签: java smartcard smartcard-reader

我有EZ100PU usb智能卡读卡器和新的(清晰的)SLE4428智能卡。我想在它们上面写数字序列。我正在尝试使用简单的Java应用程序。这是我的代码基于互联网上提供的其他代码:

public class Connection {

  public static void main(String[] args) throws Exception { 

    TerminalFactory factory = TerminalFactory.getDefault();

    CardTerminal terminal = terminals.get(1); 
    System.out.println("terminal: " + terminal.getName());
    Card card = terminal.connect("*");
    System.out.println("card: " + card);
    CardChannel channel = card.getBasicChannel(); 
    System.out.println("channel: " + channel.getChannelNumber());
    System.out.println("protocol: "+card.getProtocol());

    byte b[]=card.getATR().getBytes();
    for(int i=0;i<b.length;i++)
       System.out.print(b[i]);


//        byte[] bytes = {(byte)0xFF, (byte)0x00, (byte)0xFF, (byte)0x00};
//        ResponseAPDU r = channel.transmit(new CommandAPDU(bytes));

    card.disconnect(false);

  }
}

我有问题,因为当卡在读卡器内时,我总是得到“未知协议16”。可能是因为我不能在卡上写任何东西,如果我尝试我总是会得到错误。你能救我吗?

2 个答案:

答案 0 :(得分:0)

您正在尝试使用连接ISO 7816-3(T = 0,T = 1或T = CL)兼容处理器卡的方法连接到低位存储卡。您可能不得不使用特定于卡的读卡器库,而不能只使用javax.smartcardio

答案 1 :(得分:0)

您的SLE 4428卡的默认PIN = FFFF。 首先,您需要在命令下验证PIN使用: - FF 20 00 00 02 FFFF 然后你可以将数据写入SLE 4428卡。 如果数据是&#34;我的名字是Kashyap&#34;然后在十六进制中它是4D79206E616D65206973204B617368796170。 写数据: - FF D0 00 20 12 4D79206E616D65206973204B617368796170。 您还可以更改默认PIN。假设我想从FFFF那里将PIN码分配到1234 使用以下命令: - FF D0 03 FD 03 FF 1234.

要读取命令下面的数据: - FF B0 00 20 12

谢谢, 卡什亚普