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

标签: jdk1 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 java 语言] 推荐:

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日已经得到批准.

java语言常用性能优化技巧

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

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

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

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 查看评论.

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年代感受到的幸福愉快感.

TIOBE 11月编程语言排行榜 09年7月以来Java再次超过20%

- - 博客园_新闻
Java 在 TIOBE 指数仍然持续上涨,现在已打败了 20%. 因为 10 月底成功召开的 JavaOne 大会,它的受欢迎程度有可能进一步上升. 目前 Java 和C两大语言和其余的包之间的差距现在超过 10%. 本月前 50 排名上升幅度较大的是 OpenEdge ABL(从 19 上升至 38),VBScript(从 77 上升至 46)和 GO(从 65 上升至 48).

Java中的锁(Locks in Java)

- - 并发编程网 - ifeve.com
原文链接 作者:Jakob Jenkov 译者:申章 校对:丁一. 锁像synchronized同步块一样,是一种线程同步机制,但比Java中的synchronized同步块更复杂. 因为锁(以及其它更高级的线程同步机制)是由synchronized同步块的方式实现的,所以我们还不能完全摆脱synchronized关键字( 译者注:这说的是Java 5之前的情况).

Java PaaS 对决

- 呆瓜 - IBM developerWorks 中国 : 文档库
本文为 Java 开发人员比较了三种主要的 Platform as a Service (PaaS) 产品:Google App Engine for Java、Amazon Elastic Beanstalk 和 CloudBees RUN@Cloud. 它分析了每种服务独特的技术方法、优点以及缺点,而且还讨论了常见的解决方法.