Java语言开发智能卡应用程序34

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

※1※利用Java语言开发智能卡应用程序内容提要:本文介绍了智能卡的分类、文件系统、接口协议和Java卡的知识及其开发流程,介绍了JCDK环境的下载、安装和8个基本命令的使用。本文通过银行卡的应用实例,指导读者编写智能卡Applet,将CAP文件下载到智能卡上和使用apdu文件访问智能卡的程序。通过本文的学习,应该掌握智能卡的实现技术,可以熟练使用JBuilde编写智能卡程序。关键字:分类、文件系统、接口协议、Java卡引言:对于IC(IntelligentCard)卡,相信大家都很熟悉,如经常使用的银行卡、电话卡、地铁卡,这些都是IC卡的种类。每个IC卡都有专门的代码控制它们的实现功能,如某人利用地铁IC卡从一个检测门进入,然后在目的地的检测门出去,IC卡便会将相关的信息传送给服务器,使服务器可以进行一系列的数据处理。正文:1智能卡1.1智能卡的分类智能卡按嵌入的芯片种类分,可以分为以下两类。1.接触式卡这种卡需要使用读卡器的装置进行信息的读写操作。这种卡的表面上嵌着小的金属片,当把卡插入读卡器时,该小金属片就会同一个电子接头接触,通过这个电子接头对芯片读写数据。接触式卡主要分为以下两类卡。1)存储卡存储卡不包含复杂的处理器,它不能动态的管理文件,与读卡器的通信是同步通信。IC电话卡就是存储卡。2)微处理器卡微处理器卡是本文所要讨论的卡片,它与存储卡的的区别是:具有动态处理数据的功能。微处理器卡的系统结构有微处理器(CPU)和EEPROM(E2PROM),如SIM卡(手机卡),银行卡等都是微处理器卡。接触卡和读卡器如图1所示。图12.非接触式卡非接触式智能卡看上去和普通的塑料信用卡相似,在卡体中内嵌了天线和微电子芯片,当把它放近读卡器的天线时,它们之间就可以完成一次信息交换。这使其不用与感应器接触,便可交换信息,并且处理时间极短。如地铁卡、高速公路收费卡便是非接触卡。注意:智能卡遵循ISO7816标准。ISO7816标准规定了卡用塑料的物理特性,包括温差范围、弹性、电子触点的位置以及内置微芯片和进行信息交换的方式等。※2※1.2智能卡的文件系统智能卡的文件系统和DOS的树形文件系统相似。智能卡的文件分为:DF(DedicatedFile)和EF(ElementaryFile)。DF包含控制信息,可以成为EF或DF的父文件,与DOS中的目录文件相同;EF是数据单位的集合,不能成为任何文件的父文件,与DOS中的TXT文件相同。智能卡文件系统必须有根文件(ROOT),是DF文件,也可以称为MF(MasterFile主文件)。每个文件都有一个文件的ID(两个字节),如ROOT的ID一般为“3F00”。如果要对文件进行读写操作,就必须先用“select”命令来选择该文件的ID。如有兴趣希望进一步了解智能卡的文件结构,请参阅ISO7816标准,查看地址是,在主页面的搜索框内填入“7816”关键字查找相关的文档,网址,目录是35Themes\JBuilder\C32。1.3智能卡的接口协议智能卡是通过它的8个触点(该8个触点由ISO7816标准规定,如表1所示)与读卡器进行通信的。表18个触点的定义触点定义触点定义C1Vcc=5V(供电电压)C5Gnd(接地)C2Reset(重置信号)C6Vpp(编程电压)C3Clock(时钟信号)C7I/O(数据输入/输出)C4RFU(保留)C8RFU(保留)根据ISO7816.4规定,智能卡与外界的通信数据接口是APDU(ApplicationProtocolDataUnits,应用协议数据单元)。APDU制定了命令格式和响应格式,在数据交流中,卡只能接受信息,等待读卡器或终端向它发送APDU,收到APDU后,执行APDU中的命令,返回APDU响应。如图2所示。智能卡apdu命令发送发送返回apdu命令的响应读卡器图2通过APDU命令和返回响应,便完成卡与读卡器或终端的通信。APDU的命令格式如表2所示。表2APDU的命令格式必须部分(MandatoryHeader)可选择部分(ConditionalBody)CLAINSP1P2LcDatafieldLe上述符号表示的意思如下:(1)CLA-ClassByte:识别Applet。(2)INS-InstructionByte:定义Applet的指令。(3)P1:第一个命令参数。(4)P2:第二个命令参数(P1,P2根据INS不同,也有不同的含义)。(5)Lc:数据(DataField)的长度。(6)DataField:数据的栏位。(7)Le:回传数据的长度。注意:智能卡程序和网络的小程序都称为Applet。APDU响应命令的格式如表3所示。※3※表3APDU响应命令的格式选择部分(ConditionalBody)必须部分(MandatoryTrailer)DatafieldSW1SW2上述符号表示的意思如下:(1)DataField,数据的栏位。(2)SW1,执行状态参数1,执行参数由一个字节表示。(3)SW2,执行状态参数2。SW1+SW2=“9000”表明命令执行成功。应用上述知识,选择SIM卡的ROOT文件的APDU命令的格式如表4所示。表4ROOT文件的APDU命令的格式CLAINSP1P2LcDataA0A40023F00上述符号表示的意思如下:(1)A0:表示SIM卡。(2)A4:表示Select命令。(3)P1、P2为0,不表示任何意义。(4)Lc说明Data的长度为2个字节。(5)Data=3F00是ROOT的文件ID。如果APDU响应为9F1A,说明指令成功完成。1.4Java智能卡1996年11月,Sun公司正式发布JAVACard1.0版本的规范。现在Java卡的昀新的规范是2.2版。其实Java卡的实质是一部功能齐全、但规模较小的电脑,其硬件主要是为了保证Java卡的运行环境的需要。其昀低的硬件配置要求为:(1)RAM。昀低要求是512bytes,用于存放程序执行时的堆栈、暂存资料以及做为I/O的缓冲区。(2)ROM。昀低要求是24KB,用于存放操作系统以及运行环境,如JCVM(Java卡虚拟机)。(3)EEPROM(Electrically-ErasableProgrammableRead-OnlyMemory)。可通过电子设备写入数据的存储器。其昀低要求是8KB,用于储存开发并装载至Java卡上的Applet。(4)Processor。昀低要求是8bit,JAVA卡需要至少8位的处理器支持。Java智能卡的出现,解决了以前智能卡所不能解决的问题。主要表现为以下几个方面:(1)早期的智能卡的开发是复杂的过程。尽管ISO7816标准规定了智能卡的结构大小和通信协议,但各个智能卡生产商对智能卡的研制都各不相同。各个卡生产商对自己的智能卡操作都有自己独特的一套指令集。并且智能卡编程接口(API)非常复杂,为了使用该API,开发人员需要非常熟悉低层通信接口协议,内存管理和智能卡硬件的细节。昀不方便的是,不同的智能卡没有通用的开发环境,如果要开发一种新的应用,那么必须重新学习一个新的开发环境。※4※Java卡的出现为不同厂商的智能卡提供了统一的开发环境,95%智能卡制造商已经支持了Java卡的API。应用Java语言开发的智能卡程序可以应用在所有的Java卡上。(2)Java是面对对象的编程语言,面向对象的API简化了Java卡的Applet与终端或后台服务器的通信。(3)由于智能卡程序使用Java语言,开发人员可以选择所熟悉和喜欢的开发工具,如JBuilder。因为可以选择面向对象的开发工具,快速开发和调试Java卡的应用程序成为了可能。在以前的智能卡开发环境中,应用程序需要下载到卡的ROM,而卡的ROM程序是无法更新的,所以调试卡的程序将占用大量的开发时间。(4)Java卡支持多种用途。Java卡可以同时存在多个不同的应用,这些应用可以来自不同的卡供应商。例如它可以有电子钱包功能,也可以有身份鉴别功能,也可以有门禁系统功能。(5)Java卡支持程序的增、删、改操作。Java卡上的应用可以进行删除或者添加新的应用,不需要更换新的智能卡,大大增强智能卡的灵活性。综上所述,Java卡的出现统一了智能卡的编程接口(API),统一了智能卡的编程语言(Java语言),使智能卡成为统一标准的产业,这便是它如何受欢迎的原因。Java卡内有一个能执行JavaApplet的虚拟机,它提供Java卡编程的API,使开发人员不需要了解智能卡的硬件和专用技术就可以进行智能卡的应用开发。Java卡的Applet能够在不同卡片的环境执行,通过虚拟机的机制来达到跨平台的能力,这与Java语言可以跨平台运行的原理相同。1.5智能卡开发流程图Java智能卡程序的开发流程图如图3所示。读卡器智能卡.java文件java命令JCDK平台的converter命令.class文件.cap文件图32安装智能卡的运行环境和运行示例程序2.1下载智能卡的运行环境智能卡的运行环境包括以下文件:(1)类包comm.jar,该类包可以为跨平台的信息交流提供技术服务,如智能卡、声音邮件、传真的信息交流。※5※该类包的下载地址是。如图4所示。图4将下载的文件解压后,JavaCommAPI的目录结构如图5所示。图5javadocs目录是类包的说明文档,Samples是信息交流技术的示例文件。可以在javacomm20-win32\commapi目录找到类包comm.jar。(2)OperCardFramework(OCF1.2)开发工具包下载,该工具包是由IBM、Sun、Gemplus等一系列公司共同开发的智能卡标准架构,这个标准应用于各种平台和各种语言,本文所介绍的智能卡开发技术就是基于这个架构。该开发工具包的下载地址是,如图6所示。图6※6※找到“OpenCardFrameworkAll-in-One”部分,如图7所示。图7单击“installableclassfile”链接,下载安装的类文件(在下载之前需要注册免费用户)。OCF的安装命令是“javainstallOCF”。(3)J2ME的智能卡开发工具包JavaCard2.2DevelopmentKit,该工具包由Sun公司提供,下载地址是,找到JavaCardTMTechnology部分(如图8所示),单击JavaCard2.2DevelopmentKit链接下载JCDK文件。图8智能卡的运行环境主要由上述3个文件组成,这3个文件均可以免费获得。2.2安装、设置智能卡的运行环境智能卡运行环境的安装如下:(1)将J2ME的智能卡开发工具包解压,将java_card_kit-2_2目录复制到某个盘符的根目录下。CDK(CardDevelopmentKit)的目录结构如图9所示。①api_export_files目录是JavaCard2.2的API类包的输出文件,这些文件一般很少使用到。②bin目录是CDK的执行命令目录,这些执行命令的使用在3节介绍。③doc目录是CDK的使用说明和白皮书,doc的子目录结构如图10所示。图9图10guides目录是使用说明,whitepapers是白皮书。④lib目录是CDK的运行类包。⑤samples目录是CDK示例程序。(2)进入OCF文件的保存目录(OCF在2.1节的第2步下载),使用命令“javainstallOCF”安装OCF,安装界面如图11所示。图11在安装的过程中不需要设置任何结构,当遇到这些对话框时,单击“No”按钮,其余的步骤单※7※击“Next”按钮完成OCF的安装。OCF的目录结构如图1

1 / 34
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功