智能卡未响应重置
The smart card is not responding to a reset
我一直在研究智能卡的读/写操作,我相信我的卡是sle_4428并且我使用的是HID OMNIKEY 3121 USB 卡Reader。问题是,当我在卡 reader 中输入卡时,我的程序响应为 智能卡未响应重置 ,错误代码为 0x80100066,而不是连接卡并获得 ATR...
[编辑] 如果我只执行读取操作,它工作正常。当我执行写入操作然后重新插入卡时,它停止响应,并显示上述消息。我用来写的APDU命令是:FF D6 00 00 #(01 02)
您的问题是 HID Omnikey 无法正确"cold"重置智能卡。
使用以下 Java 代码片段,您可以重置 HID Omnikey reader CL。
import jnasmartcardio.Smartcardio;
import javax.smartcardio.*;
import javax.xml.bind.DatatypeConverter;
public class OMNIKEYConfiguration {
public static void main(String... args) throws Exception {
TerminalFactory factory = TerminalFactory.getInstance("PC/SC", null, new Smartcardio());
String terminalName = "OMNIKEY CardMan 5x21-CL 0";
CardTerminal terminal = factory.terminals().getTerminal(terminalName);
// Connect directly to reader
Card card = terminal.connect("DIRECT");
int code = 3224092; // #define IOCTL_CCID_ESCAPE SCARD_CTL_CODE(3500)
byte[] command = DatatypeConverter.parseHexBinary("0300"); // 0300 - ON; 0301 - OFF
byte[] resp = card.transmitControlCommand(code, command);
System.out.println(DatatypeConverter.printHexBinary(resp));
card.disconnect(true);
}
}
使用命令“0x0300”打开天线,否则使用“0x0301”关闭天线。
对于冷复位调用 OFF 然后 ON 命令。
我一直在研究智能卡的读/写操作,我相信我的卡是sle_4428并且我使用的是HID OMNIKEY 3121 USB 卡Reader。问题是,当我在卡 reader 中输入卡时,我的程序响应为 智能卡未响应重置 ,错误代码为 0x80100066,而不是连接卡并获得 ATR...
[编辑] 如果我只执行读取操作,它工作正常。当我执行写入操作然后重新插入卡时,它停止响应,并显示上述消息。我用来写的APDU命令是:FF D6 00 00 #(01 02)
您的问题是 HID Omnikey 无法正确"cold"重置智能卡。
使用以下 Java 代码片段,您可以重置 HID Omnikey reader CL。
import jnasmartcardio.Smartcardio;
import javax.smartcardio.*;
import javax.xml.bind.DatatypeConverter;
public class OMNIKEYConfiguration {
public static void main(String... args) throws Exception {
TerminalFactory factory = TerminalFactory.getInstance("PC/SC", null, new Smartcardio());
String terminalName = "OMNIKEY CardMan 5x21-CL 0";
CardTerminal terminal = factory.terminals().getTerminal(terminalName);
// Connect directly to reader
Card card = terminal.connect("DIRECT");
int code = 3224092; // #define IOCTL_CCID_ESCAPE SCARD_CTL_CODE(3500)
byte[] command = DatatypeConverter.parseHexBinary("0300"); // 0300 - ON; 0301 - OFF
byte[] resp = card.transmitControlCommand(code, command);
System.out.println(DatatypeConverter.printHexBinary(resp));
card.disconnect(true);
}
}
使用命令“0x0300”打开天线,否则使用“0x0301”关闭天线。
对于冷复位调用 OFF 然后 ON 命令。