Java语言开发智能卡应用程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
cnbo w.cn .class文件
java命令
.java文件
www. net ww k. 读卡器
cnbook. w.cnboo JCDK平台的converter . w 命令
.cap文件
www et w 图 3 k.n 2 安装智能卡的运行环境和运行示例程序
智能卡
nboo .cn 2.1 下载智能卡的运行环境 .c ww 智能卡的运行环境包括以下文件: w w (1)类包 comm.jar,该类包可以为跨平台的信息交流提供技术服务,如智能卡、声音邮件、
ww 1.3 智能卡的接口协议
w et 智能卡是通过它的 8 个触点(该 8 个触点由 ISO7816 标准规定,如表 1 所示)与读卡器进行通 t n 信的。
ne k. 表 1 8 个触点的定义
k. oo 触点 oo nb C1 b c C2 cn w. C3 . w C4
定义
触点
Vcc = 5V(供电电压) C5
智能卡
.n ok 图 2 ok bo 通过 APDU 命令和返回响应,便完成卡与读卡器或终端的通信。APDU 的命令格式如表 2 所示。
bo cn 表 2 APDU 的命令格式
n . 必须部分(Mandatory Header)
可选择部分(Conditional Body)
.c ww CLA INS
book.net ※ 2 ※
.cnbook 表 3 APDU 响应命令的格式
w 选择部分(Conditional Body)
必须部分(Mandatory Trailer)
wwData field
SW1
SW2
et 上述符号表示的意思如下: et .n (1)Data Field,数据的栏位。 .n ok (2)SW1,执行状态参数 1,执行参数由一个字节表示。 k o (3)SW2,执行状态参数 2。 oo nb SW1 + SW2 =“9000”表明命令执行成功。 .c 应用上述知识,选择 SIM 卡的 ROOT 文件的 APDU 命令的格式如表 4 所示。
P1
P2
Lc
Data field
Le
ww w 上述符号表示的意思如下: w(1)CLA - Class Byte:识别 Applet。 et (2)INS - Instruction Byte:定义 Applet 的指令。 .n (3)P1:第一个命令参数。 ok (4)P2:第二个命令参数(P1,P2 根据 INS 不同,也有不同的含义)。 bo cn (5)Lc:数据(Data Field)的长度。 cn w. (6)Data Field:数据的栏位。 w. ww (7)Le:回传数据的长度。 w 注意:智能卡程序和网络的小程序都称为 Applet。 w APDU 响应命令的格式如表 3 所示。
book.net ※ 1 ※
.cnbook 1.2 智能卡的文件系统
ww 智能卡的文件系统和 DOS 的树形文件系统相似。智能卡的文件分为:DF(Dedicated File)和 w t EF(Elementary File)。DF 包含控制信息,可以成为 EF 或 DF 的父文件,与 DOS 中的目录文件相 e 同;EF 是数据单位的集合,不能成为任何文件的父文件,与 DOS 中的 TXT 文件相同。智能卡文件 et .n 系统必须有根文件(ROOT),是 DF 文件,也可以称为 MF(Master File 主文件)。每个文件都有一 .n ok 个文件的 ID(两个字节),如 ROOT 的 ID 一般为“3F00”。如果要对文件进行读写操作,就必须先 k o 用“select”命令来选择该文件的 ID。如有兴趣希望进一步了解智能卡的文件结构,请参阅 ISO7816 oo nb 标准,查看地址是 http://www.iso.ch/iso/en /ISOOnline.frontpage,在主页面的搜索框内填入“7816” .c 关键字查找相关的文档,网址 http://www.cnbook.net 上也有该文件,目录是 35Themes\JBuilder\C32。
e . APDU 制定了命令格式和响应格式,在数据交流中,卡只能接受信息,等待读卡器或终端向它 .n ok 发送 APDU,收到 APDU 后,执行 APDU 中的命令,返回 APDU 响应。如图 2 所示。
ok bo 返回apdu命令的响应
.cnbo ww.cn 发送
apdu命令
发送
www et w . 读卡器
book.net ※ 3 ※
.cnbook Java 卡的出现为不同厂商的智能卡提供了统一的开发环境,95%智能卡制造商已经支持了 Java w 卡的 API。
ww 应用 Java 语言开发的智能卡程序可以应用在所有的 Java 卡上。 et (2)Java 是面对对象的编程语言,面向对象的 API 简化了 Java 卡的 Applet 与终端或后台服务 t n 器的通信。 ne k. (3)由于智能卡程序使用 Java 语言,开发人员可以选择所熟悉和喜欢的开发工具,如 JBuilder。 k. oo 因为可以选择面向对象的开发工具,快速开发和调试 Java 卡的应用程序成为了可能。 oo nb 在以前的智能卡开发环境中,应用程序需要下载到卡的 ROM,而卡的 ROM 程序是无法更新的, c 所以调试卡的程序将占用大量的开发时间。 w. (4)Java 卡支持多种用途。 ww Java 卡可以同时存在多个不同的应用,这些应用可以来自不同的卡供应商。例如它可以有电子 t 钱包功能,也可以有身份鉴别功能,也可以有门禁系统功能。 t ne (5)Java 卡支持程序的增、删、改操作。 ne k. Java 卡上的应用可以进行删除或者添加新的应用,不需要更换新的智能卡,大大增强智能卡的 . o 灵活性。 ok bo 综上所述,Java 卡的出现统一了智能卡的编程接口(API),统一了智能卡的编程语言(Java 语 bo cn 言),使智能卡成为统一标准的产业,这便是它如何受欢迎的原因。 cn w. Java 卡内有一个能执行 Java Applet 的虚拟机,它提供 Java 卡编程的 API,使开发人员不需要 . w 了解智能卡的硬件和专用技术就可以进行智能卡的应用开发。 w t Java 卡的 Applet 能够在不同卡片的环境执行,通过虚拟机的机制来达到跨平台的能力,这与 Java t ne 语言可以跨平台运行的原理相同。 ne k. 1.5 智能卡开发流程图 ok. boo Java 智能卡程序的开发流程图如图 3 所示。
ww.cnbook 利用 Java 语言开发智能卡应用程序 t w net 内容提要:本文介绍了智能卡的分类、文件系统、接口协议和 Java 卡的知识及其开发流程,介 e . 绍了 JCDK 环境的下载、安装和 8 个基本命令的使用。本文通过银行卡的应用实例,指导读者编写 .n ok 智能卡 Applet,将 CAP 文件下载到智能卡上和使用 apdu 文件访问智能卡的程序。通过本文的学习, ok bo 应该掌握智能卡的实现技术,可以熟练使用 JBuilde 编写智能卡程序。 o cn 关键字:分类、文件系统、接口协议、Java 卡 . 引言:对于 IC(Intelligent Card)卡,相信大家都很熟悉,如经常使用的银行卡、电话卡、地 ww 铁卡,这些都是 IC 卡的种类。每个 IC 卡都有专门的代码控制它们的实现功能,如某人利用地铁 IC w t 卡从一个检测门进入,然后在目的地的检测门出去,IC 卡便会将相关的信息传送给服务器,使服务 e 器可以进行一系列的数据处理。 et .n 正文: k.n ook 1 智能卡 boo cnb 1.1 智能卡的分类 .cn ww. 智能卡按嵌入的芯片种类分,可以分为以下两类。 w 1. 接触式卡 et 这种卡需要使用读卡器的装置进行信息的读写操作。这种卡的表面上嵌着小的金属片,当把卡 et .n 插入读卡器时,该小金属片就会同一个电子接头接触,通过这个电子接头对芯片读写数据。接触式 n k 卡主要分为以下两类卡。 k. oo 1)存储卡 oo nb 存储卡不包含复杂的处理器,它不能动态的管理文件,与读卡器的通信是同步通信。IC 电话卡 nb .c 就是存储卡。 c w 2)微处理器卡 w. ww 微处理器卡是本文所要讨论的卡片,它与存储卡的的区别是:具有动态处理数据的功能。微处 w理器卡的系统结构有微处理器(CPU)和 EEPROM(E2PROM),如 SIM 卡(手机卡),银行卡等都 w t 是微处理器卡。 ne k. 接触卡和读卡器如图 1 所示。
w 表 4 ROOT 文件的 APDU 命令的格式
ww CLA et A0
INS A4
P1 0
P2 0
Lc 2
Data 3F00
et .n 上述符号表示的意思如下: .n ok (1)A0:表示 SIM 卡。 k o (2)A4:表示 Select 命令。 oo nb (3)P1、P2 为 0,不表示任何意义。 nb .c (4)Lc 说明 Data 的长度为 2 个字节。 .c ww (5)Data=3F00 是 ROOT 的文件 ID。 w 如果 APDU 响应为 9F1A,说明指令成功完成。
Reset(重置信号) C6
Clock(时钟信号) C7
RFU(保留)
wk.baidu.com
C8
定义 Gnd(接地) Vpp(编程电压) I/O(数据输入/ 输出) RFU(保留)
w t 根据 ISO7816.4 规定,智能卡与外界的通信数据接口是 APDU(Application Protocol Data Units, t ne 应用协议数据单元)。
t net 1.4 Java 智能卡
ne k. 1996 年 11 月,Sun 公司正式发布 JAVA Card1.0 版本的规范。现在 Java 卡的最新的规范是 2.2 k. oo 版。
oo nb 其实 Java 卡的实质是一部功能齐全、但规模较小的电脑,其硬件主要是为了保证 Java 卡的运 b c 行环境的需要。
cn w. 其最低的硬件配置要求为: w. ww (1)RAM。 w 最低要求是 512 bytes,用于存放程序执行时的堆栈、暂存资料以及做为 I/O 的缓冲区。 w (2)ROM。
net k. 最低要求是 24KB,用于存放操作系统以及运行环境,如 JCVM(Java 卡虚拟机)。 k. oo (3)EEPROM(Electrically-Erasable Programmable Read-Only Memory)。 o b 可通过电子设备写入数据的存储器。 bo cn 其最低要求是 8 KB,用于储存开发并装载至 Java 卡上的 Applet。 cn w. (4)Processor。 . w 最低要求是 8bit,JAVA 卡需要至少 8 位的处理器支持。 w w Java 智能卡的出现,解决了以前智能卡所不能解决的问题。 ww 主要表现为以下几个方面: et (1)早期的智能卡的开发是复杂的过程。 n 尽管 ISO7816 标准规定了智能卡的结构大小和通信协议,但各个智能卡生产商对智能卡的研制 k. 都各不相同。 boo cn 各个卡生产商对自己的智能卡操作都有自己独特的一套指令集。并且智能卡编程接口(API) n . 非常复杂,为了使用该 API,开发人员需要非常熟悉低层通信接口协议,内存管理和智能卡硬件的 .c ww 细节。 w w 最不方便的是,不同的智能卡没有通用的开发环境,如果要开发一种新的应用,那么必须重新 ww 学习一个新的开发环境。
www.cnbook. net www.cnboo 图1 k. 2. 非接触式卡 oo n 非接触式智能卡看上去和普通的塑料信用卡相似,在卡体中内嵌了天线和微电子芯片,当把它 nb .c 放近读卡器的天线时,它们之间就可以完成一次信息交换。这使其不用与感应器接触,便可交换信 .c ww 息,并且处理时间极短。如地铁卡、高速公路收费卡便是非接触卡。 w w 注意:智能卡遵循 ISO7816 标准。ISO7816 标准规定了卡用塑料的物理特性,包括温差范围、 ww 弹性、电子触点的位置以及内置微芯片和进行信息交换的方式等。