从本文开始,我们陆续刊登一系列在智能卡上进行Java开发的文章,以此把智能卡向您作一个基本的介绍。只要有一块智能卡、一个读卡机和一套可与智能卡通信的软件,你就可以开始进行实用应用程序的开发了。本文介绍的内容包括:遵循ISO7816标准的智能卡管理软件;如何使用Gemplus阅读器和Gemplus智能卡从智能卡中读写内存;一些利用智能卡的存储功能的应用程序。以后的文章将介绍不同厂家生产的智能卡,并且还将涉及智能卡的标准。
作为专题系列的第一篇,本文将主要为以后的讨论作一个铺垫工作。在此,我们将讨论一个称为OpenCard的新标准。以后的文章将涉及安全智能卡和电子钱包。最后,我们将向您介绍智能卡软件的基本框架结构。
无论是在四月份的JavaOne大会上(与该技术有关的四次演讲),还是在巨大的网络新闻站或是CNN,智能卡掀起了轩然大波。在本文里,我们将以实用智能卡实例向您展示真正的智能卡。这里的技术将允许你开发智能卡Java应用程序。
我们的讨论焦点主要集中在两种智能卡之上:存储智能卡,它可以被看作带有可选安全级别的小型可读写磁盘;处理器卡,它可以被看作带有一个输入输出端口的迷你型计算机。以后的文章将更为深入的介绍处理器卡。
本文的精华之处在于,我们将为读写智能卡创立一个简单的原形。我们要讨论一种医药处方卡,它将替你保存所有的药方清单,并检查保险、处方计划等等有用的信息。并且我们将围绕处方卡扩展开去。
在这一系列的文章之中,你会注意到伴随智能卡的一个常见主题,那就是安全性问题。这里所说的安全,主要是防止通过卡的滥插入或ActiveX组件等手段非法获取数据。为此目的,本文中关于读写智能卡中数据的范例将给你提供一个安全、一致且具可移植性的存储。
智能卡是什么
你可以把智能卡当作一个带有大脑的信用卡。其大脑就是一个小的嵌入式计算机芯片。这种芯片可以被编程执行某项任务或是存储一些数据,但应时刻牢记:该种芯片只不过是小型的,它的处理能力绝对比不上你的桌面计算机。
目前,智能卡仅仅用于电话、运输、银行和保健等行业,但是感谢众多的开发者,在不久的将来,我们就会看到智能卡应用于Internet应用程序之中。智能卡已经在日本和欧洲广为应用,并且在美国受到了欢迎。事实上,在美国的智能卡业界最近共发生了三件颇具意义的事件:
PC/SC
Microsoft联合其它几家公司推出了称为PC/SC的智能卡应用程序标准,用于Win32平台的个人计算机与智能卡之间实现互通信。PC/SC目前不支持非Win32的系统平台,或许Microsoft 永远也不会那样做。稍后我们将对此详加讨论。
OpenCard框架
OpenCard是一个开放式的标准,它支持智能卡应用程序在网络计算机、POS、桌面和膝上计算机等平台之上实现互操作。OpenCard许诺提供100%纯Java的智能卡应用程序。通常智能卡应用程序不能完全借助于纯Java,因为它们必需与外设互通信或是利用客户之上的程序库。(当然,没有OpenCard,我们仍然能够使用100%的纯Java,但是,智能卡的开发者必需从头定制一个接口。)OpenCard还提供了一个到PC/SC的接口,使得开发者得以使用现有Win32 平台上的设备。
JavaCard
JavaCard最初由Schlumberger提出,目前已被JavaSoft制定为一项标准。Schlumberger 目前在市场上只提供Java智能卡,而且该公司是第一个获得JavaCard许可的厂商。作为一项极有潜力占踞统治地位的智能卡标准,JavaCard包括了标准的类库和API,使得Java小应用能够直接运行在遵循ISO7816标准的智能卡之上。JavaCard对不同的应用程序提供安全和与芯片无关的运行环境。
注意:
尽管本文集中于智能卡主题,但更为重要的是你决不应囿于这一种设备之上。从我个 人角度将,我更为偏爱Dallas Semiconductor生产的“Ibutton”设备。它象一个小型便携的 信用卡一样,但是更为易用。为什么呢?因为你不再需要拿出钱包从几张卡中选出要用的 那一张,Ibutton就在你的手中。对了,它是一枚指环。
尽管存在无接触型的智能卡(关于这方面的信息见下文),我认为Ibutton这样象珠宝 饰品一样的产品一定会有利可图。关于Ibutton详情请见参考资料。顺便说一句,八月份在 纽约的Java Internet Business Expo(JIBE)展会上,Java Commerce Team展示了“JavaRing”。
从本文开始,我们陆续刊登一系列在智能卡上进行Java开发的文章,以此把智能卡向您作一个基本的介绍。只要有一块智能卡、一个读卡机和一套可与智能卡通信的软件,你就可以开始进行实用应用程序的开发了。本文介绍的内容包括:遵循ISO7816标准的智能卡管理软件;如何使用Gemplus阅读器和Gemplus智能卡从智能卡中读写内存;一些利用智能卡的存储功能的应用程序。以后的文章将介绍不同厂家生产的智能卡,并且还将涉及智能卡的标准。
作为专题系列的第一篇,本文将主要为以后的讨论作一个铺垫工作。在此,我们将讨论一个称为OpenCard的新标准。以后的文章将涉及安全智能卡和电子钱包。最后,我们将向您介绍智能卡软件的基本框架结构。
无论是在四月份的JavaOne大会上(与该技术有关的四次演讲),还是在巨大的网络新闻站或是CNN,智能卡掀起了轩然大波。在本文里,我们将以实用智能卡实例向您展示真正的智能卡。这里的技术将允许你开发智能卡Java应用程序。
我们的讨论焦点主要集中在两种智能卡之上:存储智能卡,它可以被看作带有可选安全级别的小型可读写磁盘;处理器卡,它可以被看作带有一个输入输出端口的迷你型计算机。以后的文章将更为深入的介绍处理器卡。
本文的精华之处在于,我们将为读写智能卡创立一个简单的原形。我们要讨论一种医药处方卡,它将替你保存所有的药方清单,并检查保险、处方计划等等有用的信息。并且我们将围绕处方卡扩展开去。
在这一系列的文章之中,你会注意到伴随智能卡的一个常见主题,那就是安全性问题。这里所说的安全,主要是防止通过卡的滥插入或ActiveX组件等手段非法获取数据。为此目的,本文中关于读写智能卡中数据的范例将给你提供一个安全、一致且具可移植性的存储。
智能卡是什么
你可以把智能卡当作一个带有大脑的信用卡。其大脑就是一个小的嵌入式计算机芯片。这种芯片可以被编程执行某项任务或是存储一些数据,但应时刻牢记:该种芯片只不过是小型的,它的处理能力绝对比不上你的桌面计算机。
目前,智能卡仅仅用于电话、运输、银行和保健等行业,但是感谢众多的开发者,在不久的将来,我们就会看到智能卡应用于Internet应用程序之中。智能卡已经在日本和欧洲广为应用,并且在美国受到了欢迎。事实上,在美国的智能卡业界最近共发生了三件颇具意义的事件:
PC/SC
Microsoft联合其它几家公司推出了称为PC/SC的智能卡应用程序标准,用于Win32平台的个人计算机与智能卡之间实现互通信。PC/SC目前不支持非Win32的系统平台,或许Microsoft 永远也不会那样做。稍后我们将对此详加讨论。
OpenCard框架
OpenCard是一个开放式的标准,它支持智能卡应用程序在网络计算机、POS、桌面和膝上计算机等平台之上实现互操作。OpenCard许诺提供100%纯Java的智能卡应用程序。通常智能卡应用程序不能完全借助于纯Java,因为它们必需与外设互通信或是利用客户之上的程序库。(当然,没有OpenCard,我们仍然能够使用100%的纯Java,但是,智能卡的开发者必需从头定制一个接口。)OpenCard还提供了一个到PC/SC的接口,使得开发者得以使用现有Win32 平台上的设备。
JavaCard
JavaCard最初由Schlumberger提出,目前已被JavaSoft制定为一项标准。Schlumberger 目前在市场上只提供Java智能卡,而且该公司是第一个获得JavaCard许可的厂商。作为一项极有潜力占踞统治地位的智能卡标准,JavaCard包括了标准的类库和API,使得Java小应用能够直接运行在遵循ISO7816标准的智能卡之上。JavaCard对不同的应用程序提供安全和与芯片无关的运行环境。
注意:
尽管本文集中于智能卡主题,但更为重要的是你决不应囿于这一种设备之上。从我个 人角度将,我更为偏爱Dallas Semiconductor生产的“Ibutton”设备。它象一个小型便携的 信用卡一样,但是更为易用。为什么呢?因为你不再需要拿出钱包从几张卡中选出要用的 那一张,Ibutton就在你的手中。对了,它是一枚指环。
尽管存在无接触型的智能卡(关于这方面的信息见下文),我认为Ibutton这样象珠宝 饰品一样的产品一定会有利可图。关于Ibutton详情请见参考资料。顺便说一句,八月份在 纽约的Java Internet Business Expo(JIBE)展会上,Java Commerce Team展示了“JavaRing”。
重要的智能卡标准
智能卡应用程序开发中容易使人迷惑的一点是标准协议问题。在我们的例子中基本上是应用程序与阅读器通信,然后由阅读器以一种标准协议与智能卡通信。而这种标准是国际标准化组织的7816协议。
象其它许多新技术一样,关于智能卡有许许多多令人眼花缭乱的技术标准。对于下面这些标准形成初步的了解之后,你就会大体上掌握智能卡应用程序设计的基本技术要点。当然对于一些系统的特殊标准还须另外掌握。我把这一向、整套标准分成“横向的”和“纵向的”两个部分:横向的标准可以被所有的应用程序所用,而纵向的标准仅仅适用于特定的系统。
横向的标准
ISO7816--描述到智能卡底层接口标准。这种标准定义智能卡阅读器和智能卡之间如何传递字节流。
PC/SC--定义运行Win3.1/Win95/NT的机器与智能卡之间通信的标准。
OCF--定义从Java应用环境和智能卡之间的通信标准,该标准完全是Java接口。(很快,OCF 将允许开发者向OCF输出,并执行转换,这样开发者再无必要使用PC/SC了。)
JavaCard--描述JavaCard和它所支持的标准。
纵向的标准
Mondex--以智能