jdk1.6 java语言 连接pcsc读卡器 发送APDU指令

标签: jdk1.6 java 语言 | 发表时间:2014-09-22 00:13 | 作者:wyx100
分享到:
出处:http://blog.csdn.net

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();
  }
 }
}

 

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.");
   }
 }
}

 

作者:wyx100 发表于2014-9-22 0:13:28 原文链接
阅读:147 评论:0 查看评论

相关 [jdk1.6 java 语言] 推荐:

jdk1.6 java语言 连接pcsc读卡器 发送APDU指令

- - CSDN博客编程语言推荐文章
java语言操作读卡器  jdk1.6 提供的Package javax.smartcardio可以直接连接pcsc读卡器、和读卡器进行指令交互. Package javax.smartcardio详细信息. 作者:wyx100 发表于2014-9-22 0:13:28 原文链接. 阅读:147 评论:0 查看评论.

通过JAVA反射修改JDK1.6*当中DNS缓存内容

- - Taobao QA Team
为了实现性能压测时的域名动态绑定功能,尝试通过java反射修改JDK1.6×当中的DNS缓存,感谢在此过程中林轩同学的大力帮助. 网上也存在着修改DNS缓存的方法,但是都是基于jdk1.5的,无法应用. 另外,大部分都是修改的缓存过期时间,而没有真正去尝试修改dns 的cache内容,所以尝试了很多种方法,并且查看了jdk的源代码,终于实现了修改dns缓存内容和时间,如下,欢迎大家一起探讨.

(原)CentOS_linux5.5、JDK1.6、tomcat7、nginx、mysql5.1、mongodb安…

- - Linux - 操作系统 - ITeye博客
转: http://blog.sina.com.cn/s/blog_438308750100xsb5.html. # 关闭不需要的服务按上面的安装关闭 ip6tables、jexec、kudzu、lvm2-monitor、mcstrans、netfs、rawdevices、restorecond. 2.禁止Ctrl+Alt+Delete重新启动机器命令.

Java跨语言调用实现方案

- LightingMan - 淘宝JAVA中间件团队博客
在大型分布式 java 应用中,为了方便开发者,通常底层的 rpc 框架都会做一些调用的封装,让应用层开发人员在开发服务的时候只用编写简单的 pojo 对象就可以了,如流行的 spring remoting , jboss remoting 等等,都有这样的效果. 随着业务的需要,可能上层应用希望采用非 java 技术,如 php , ruby on rails ,而由于 java gc 和内存模型的限制,可能有的底层服务又需要采用更高性能和更加灵活的技术,如果 c++ , python 等.

[链接帖] 新的Java语言规范、Java虚拟机规范

- Wong - Script Ahead, Code Behind
随着7月28日,也就是Java SE 7预定的发布日期越来越近,相关的一些规范也已得到或即将得到批准. 这里主要关注的是下面几个规范:. Java语言规范,JSR 901的第三修订版(Maintenance Review 3)已经完成审核但尚未正式得到批准. Java虚拟机规范,JSR 924的第三修订版(Maintenance Review 3)在今年3月19日已经得到批准.

CXF中jaxb-api.jar、jaxws-api.jar与jdk1.6不兼容问题

- - ITeye博客
服务器是tomcat6,在cxf-2.3.10中的:jaxb-api-2.2.3.jar jaxb-impl-2.2.4-1.jar 在jdk1.6中不兼容的问题,报错如下:. 原因是:需要jaxb 2.1,却加载了2.0,因为jdk1.6自带jaxb 2.0造成的,解决的办法是在D:\tomcat6下加入endorsed文件夹,.

探索Java语言与JVM中的Lambda表达式(译)

- - BlogJava_首页
探索Java语言与JVM中的Lambda表达式.     Lambda表达式是自Java SE 5引入泛型以来最重大的Java语言新特性,本文是2012年度最后一期 Java Magazine中的 一篇文章,它介绍了Lamdba的设计初衷,应用场景与基本语法. (2013.01.02最后更新).

java语言常用性能优化技巧

- - Java - 编程语言 - ITeye博客
java语言常用性能优化技巧介绍.     java程序常用的方法有以下几种:.     1.不用new关键词创建类的实例. 用new关键词创建类的实例时,构造函数链中的所有构造函数都会被自动调用. 但如果一个对象实现了Cloneable接口,我们可以调用它的clone()方法. clone()方法不会调用任何类构造函数.

2011年10月编程语言排行榜:Java人气持续走低

- coofucoo - cnBeta.COM
在TIOBE公布的2011年10月编程语言排行榜中,Java继续着9月的势头,持续走低,下降了几乎1%的人气,尽管Oracle在八月初发布了最新的Java 7. 看来下个月C语言又要复返第一的宝座了.

Java之父评价C语言之父:我用尽了形容词

- satan - Solidot
伯乐 写道 "詹姆斯·高斯林在上周发布了关于讨论C语言之父丹尼斯·里奇(Dennis Ritchie)的简短博文(中文),认为他的影响巨大,并超越了科技世界,虽然他的大多影响都不为人知,但完全可以感受到. 他说,“我的整个职业生涯也是从C和Unix中发展而来. 对当今的大多数工程师而言,很难理解我在20世纪70年代感受到的幸福愉快感.