Java智能卡基础篇 - 编程入门网
下面是一些支持APDU传输的类及其功能描述: Command--封装命令APDU Response--封装回应APDU ISOCardReader--规定一个接口。每一种设备必须实现该接口 ISOCommand--构成一个ISOCommand并从ISOCardReader接口执行该命令与智能卡通信 Sun开发了JavaElectronicCommerceFramework(JECF),这是对核心Java平台的扩展,它允许开发者轻松快速的开发商用电子应用程序。JECF提供几种与智能卡通信的类。 Java智能卡基础篇(5)时间:2010-12-19我们这里讨论的智能卡分别有一条读取数据和写入数据的命令。它是由GemPlus提供的名为GFM卡。你也可以使用其它类型的智能卡,只要它们支持ISO7816标准并且你了解它们的APDU命令格式。当然还要做一点程序工作。GFM卡的内存是以64个比特或是8个字节为单位的。你必须用模8的算法读写数据。换句话说,你不能向GFM卡做一次长度为1k连续的写入。我们这里提供的Java代码完成这项功能。一些新的智能卡支持更大单位的读写单位。因此,为了写入字符串“0123456789”,你必须发出两条适当编址的命令。(是的,智能卡就是这样难于编程。)当存储型卡和处理器型卡相互融合时,这种限制也许会消失。 为了读取上面那条字符串,你应该发出“read”命令。这两种命令按照APDU的术语被格式化的写在了下面。在我们的例子中利用了Java读写智能卡。下面表中的值示出如何组成一个APDU。在GCM编程指南中定义了APDU的结构。
“upper”和“lower”是地址的高位和低位字节。举几个例子可能会有助于明晰概念。这张 表的upper和lower值提供了存储数据的确定地址。我们讨论过的向GPM896智能卡通信的两 种方法是:
浏览器与智能卡之间的通信 三个本地接口的存在表明对主要的开发者集团缺乏了解,没有能够充分考虑如何向处 于Java开发环境的开发者们提供简单易于记忆的API。如果所有的销售商均支持JNI,至少 接口可保持一致,你不必化大量的时间去把接口绑定。当然你必须书写少量的本地代码,但 拥有统一的接口还是有价值的。我尝试了所有三种API,最终发现JNI要比其它的更为一致,并且也最为简单、易于实现。联合HotJava一块使用是最佳的,这样你可以对与串口通信的 类签名,然后安全的使用它们,比起另外两种浏览器来讲麻烦要少的多。Sun最近还宣布帮 助浏览器公司实现新版JDK/JVM的建议。 前面的讨论围绕如何与一个不支持JDK的硬件设备通信。在下面的几篇文章里我们将不再使用“本地接口”,而是使用一个工业标准与智能卡通信。我所选择的这项标准就是带有PC/SC桥的OpenCard标准。我将用OpenCard而不是PC/SC书写应用程序,为什么呢? 作为开发者,你拥有多种选择。通常来讲这是一件好事,但这也可能导致成本升高和功 能的不一致性,尤其是当你选择的API并不被多种平台所支持时。例如,你决定用PC/SC标准 书写支持Win32系列平台的智能卡应用程序。如果你的应用程序是一个顾客使用的应用并 且将用在WebTV之上,你的选择就是完全错误的。显示器上将会闪动一条信息:“等待WebTV 的Pentium版本。”智能卡是用在Win32桌面和CE单元以外的市场之上的。那么你应该如何呢 ?使用OpenCard标准,抛弃缺乏一致JNI绑定的Internet Explorer。事实上,我认为将所有API 抽象至单一平台是一个极为明智的选择。 实用的应用程序 现在应该开始编写一个更具实用价值的智能卡应用程序了。将来,我们去看医生,他建议采取特定的治疗,我们可能处于如下 |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |