java操作智能卡 IC卡 连接pcsc读卡器 发送APDU指令 源代码 下载 jdk1.6满足要求 java语言 操作IC卡 操作智能卡
2014-09-22 00:13
447 查看
java语言操作读卡器 jdk1.6 提供的Package javax.smartcardio可以直接连接pcsc读卡器、和读卡器进行指令交互
Package javax.smartcardio详细信息http://docs.oracle.com/javase/6/docs/jre/api/security/smartcardio/spec/javax/smartcardio/package-summary.html
java语言代码实例
连接读卡器和卡片,并复位
/** *connectpcsc.java */ import java.util.List; import javax.smartcardio.CardTerminal; import javax.smartcardio.TerminalFactory; public class connectpcsc { /** * main function, listing all the PC/SC readers connected to your PC */ public static void main(String[] args) { // show the list of available terminals TerminalFactory factory = TerminalFactory.getDefault(); // list of readers (empty) List<CardTerminal> terminals; try { // get list of readers form the terminal terminals = factory.terminals().list(); // print list of readers to the console. System.out.println(terminals.toString()); } catch (Exception e) { // Print Stack-Trace in case of an error e.printStackTrace(); } } }
连接读卡器和卡片,发送APDU指令
import java.util.List; import javax.smartcardio.Card; import javax.smartcardio.CardChannel; import javax.smartcardio.CardException; import javax.smartcardio.CardTerminal; import javax.smartcardio.CommandAPDU; import javax.smartcardio.ResponseAPDU; import javax.smartcardio.TerminalFactory; public class GetStatus { public static void main(String[] args) { TerminalFactory factory = TerminalFactory.getDefault(); try { List<CardTerminal> terminal = factory.terminals().list(); System.out.println("terminal:" + terminal); CardTerminal ter = terminal.get(0); // establish a connection with the card Card card = ter.connect("T=0"); System.out.println("card: " + card); CardChannel channel = card.getBasicChannel(); ResponseAPDU r = channel.transmit(new CommandAPDU(160, 242, 0, 0, 22)); //A0 F2 00 00 16 System.out.println("response: " + r.toString()); for(int j=0; j<8; j++) { System.out.print(Integer.toHexString( (int)((r.getData()[j]+256) % 256)) + " "); } System.out.print("\n"); for(int j=0; j<card.getATR().getBytes().length; j++) { System.out.print(Integer.toHexString( (int)((card.getATR().getBytes()[j]+256) % 256)) + " "); } // disconnect card.disconnect(false); } catch (CardException e) { // TODO Auto-generated catch block System.out.println("connection erro,or card not inserted."); } } }
相关文章推荐
- jdk明明是1.7满足Dynamic Web Module 3.0的要求可还是报错Dynamic Web Module 3.0 requires Java 1.6 or newer
- JAVA 1.5 最全的各个版本的JDK,里面当然也包含对应的源代码了,在要求小版匹配时尤其重要.
- JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- java 连接FTP下载指定目录下的所有符合要求的文件
- Java JDK 1.6 API 中文文档下载
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- 转:JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- JAVA编程工具下载 JDK 1.6版 官方下载
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- Java语言程序设计-JDK 1.6 及 Eclipse 3.4安装及配置
- jdk1.6和API下载的网址连接
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- JDK1.6官方下载_JDK6官方下载地址:http://www.java.net/download
- JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载
- 【转】JAVA帮助文档全系列 JDK1.5 JDK1.6 JDK1.7 官方中英完整版下载