JAVA卡开发技术详解

合集下载

使用Java创建简单的卡片游戏

使用Java创建简单的卡片游戏

使用Java创建简单的卡片游戏-一个实战教程卡片游戏是一种受欢迎的休闲娱乐活动,它可以让玩家在游戏中享受乐趣并挑战自己的智力。

在这个实战博客中,我们将创建一个基于Java的简单卡片游戏,用于展示如何实现扑克牌或其他类型的卡片游戏。

我们将深入了解Java编程语言,以帮助您构建自己的卡片游戏。

以下是本实战博客的主要内容:项目概述准备工作创建Java项目卡片游戏规则设计卡片类创建卡片牌组实现游戏逻辑构建用户界面总结让我们开始吧!1. 项目概述在本项目中,我们将创建一个简单的Java卡片游戏,具体来说,我们将实现一个"记忆卡片游戏",玩家需要翻转卡片并找到匹配的卡片对。

这个项目将涵盖以下主要功能:创建卡片:我们将设计和创建卡片对象,每个卡片上都有一个标识符和一个面值。

卡片牌组:我们将创建一个卡片牌组,包含多个卡片,并随机排列它们。

游戏逻辑:我们将实现游戏的核心逻辑,包括卡片的翻转、匹配检查和胜利条件。

用户界面:我们将使用Java Swing库构建用户界面,使玩家能够与游戏互动。

2. 准备工作在开始之前,确保您的开发环境已设置好。

我们将使用Java编程语言,需要以下准备工作:安装Java开发工具,如Eclipse、IntelliJ IDEA等。

了解Java编程基础知识,包括类、对象、集合等。

了解如何使用GUI库创建用户界面。

3. 创建Java项目首先,创建一个新的Java项目,您可以使用Eclipse、IntelliJ IDEA等工具来完成此操作。

在项目中,我们将创建Java类来实现卡片游戏。

4. 卡片游戏规则在"记忆卡片游戏"中,玩家将面对一组卡片,每张卡片上都有一个面值。

游戏的基本规则如下:所有的卡片都面朝下,玩家不能看到它们的面值。

玩家需要依次翻转两张卡片,看它们的面值是否匹配。

如果两张卡片的面值匹配,这对卡片将保持翻开状态。

如果两张卡片的面值不匹配,这对卡片将被翻回面朝下的状态。

JavaCardApplet开发讲义

JavaCardApplet开发讲义

本手册的版权和解释权属于握奇数据系统有限公司
4
4
本手册的版权和解释权属于握奇数据系统有限公司
2
JavaCard Applet开发讲义
握奇数据
JavaCard VM的限制
JavaCard VM规范额外定义了一些程序属性的约束。 Java Card开发者 要注意这些约束。
程序包
一个程序包可以引用128个其他的程序包
在同一个执行上下文中的小应用程序默认情况下能够相
互访问,所以Applet A和Applet B不需要遵循这个程序 来共享对象。
Applet A

Applet B
JCRE

Applet C
Applet D applet firewall
本手册的版权和解释权属于握奇数据系统有限公司
12
12
本手册的版权和解释权属于握奇数据系统有限公司
Applet A Applet B
Applet C
Applet D applet firewall
JCRE
本手册的版权和解释权属于握奇数据系统有限公司
11
11
握奇数据
Applet的隔离与共享
Java Card平台支持跨防火墙的安全对象共用。典型的 流程如下:
– 请求通过调用系统的JCSystem.getAppletSharea bleInterfaceObject ()方法访问Appletc的共享接
Java Card事务以对beginTransaction()的调用开始,以对 commitTransaction()或者abortTransaction()的调用结束。在事务过 程中所有的写操作都将被保护。JCRE不支持嵌套事务。

JavaCard简介(中文版)

JavaCard简介(中文版)

1、简介Java Card 3 平台由两个版本组成Classic Edition和Connected Edition:Classic Edition是一个基于 2.2.2版本的前端兼容的演化平台,针对资源有限的设备仅支持applet-based应用。

如果你只对Classic Edition中提供的功能感兴趣的话就可以忽略Connected Edition。

Connected Edition提供了一个显著增强的运行时环境和一个新的虚拟机。

包含了一些新的面向网络的应用,例如提供了针对web应用的Servlet APIs,并且支持一些新的applet功能增强。

一个Connected Edition的应用可能会用到Classic Edition提供的特性,因此这两个版本的规范应用一起使用。

1.1动机Java Card技术使得用Java编程语言编写的程序可以运行在智能卡和其他小的资源紧张的设备上。

开发人员可以用标准的软件开发工具和环境来编译和调试程序,然后把程序转化成能被Java Card支持的格式。

Java Card上的应用程序被称为Applet,或者更明确的称为Java Card Applet 或者Card Applet(为了和浏览器Applets做区分)。

Java Card技术使得用Java语言编写的程序可以在智能卡上运行,然而如此小的设备远不足以支持Java平台的全部功能。

因此,Java Card平台仅仅支持一个被仔细挑选,定制的Java平台属性的的子集。

这个子集使得写的程序在小设备上有更好适应性,并且保持了Java语言的面向对象的特性。

一个简单的途径是定义一个代码可以在所有Java Card环境下移植的Java虚拟机的子集。

结合JVM的子集规定和信息,智能卡提供商可以在Java Card规范上构建自己的工具。

虽然手段是可行的,但有一个严重的缺点,目标平台将会丧失字节码的移植性。

Java平台的规范允许Java的代码在所有Java平台上移植,Java的“写一次,所有地方运行”的属性或许是平台的最重要的特性。

java 技术栈 描述

java 技术栈 描述

java 技术栈描述Java技术栈作为当前软件开发领域的重要技能组合,为广大开发者提供了强大的工具和框架。

本文将为您详细描述Java技术栈的相关内容,帮助您更好地理解和掌握这一技术体系。

一、Java技术栈概述Java技术栈是指使用Java编程语言进行软件开发时所涉及的一系列技术、工具和框架。

它涵盖了Java语言本身以及与之相关的各种库、框架、数据库、中间件等。

Java技术栈具有跨平台、高性能、安全稳定等优势,被广泛应用于企业级应用、大数据、云计算、Android开发等领域。

二、Java技术栈核心组成部分1.Java语言:Java技术栈的基础,提供了面向对象编程、泛型、异常处理、多线程等核心特性。

2.Java虚拟机(JVM):Java程序运行的环境,负责加载和执行Java字节码,实现跨平台运行。

3.核心库:Java API,提供了丰富的数据结构、算法、I/O操作、网络编程等功能。

4.开发工具:Eclipse、IntelliJ IDEA等集成开发环境,以及Maven、Gradle等构建工具。

5.框架:Spring、Hibernate、MyBatis等主流框架,简化开发过程,提高开发效率。

6.数据库:MySQL、Oracle、PostgreSQL等关系型数据库,以及MongoDB、Redis等NoSQL数据库。

7.中间件:Tomcat、Jetty等Web服务器,以及RabbitMQ、Kafka等消息中间件。

8.大数据技术:Hadoop、Spark、Flink等大数据处理框架,以及HBase、Cassandra等分布式数据库。

9.云计算:Spring Cloud、Dubbo等微服务框架,以及AWS、阿里云等云平台。

三、Java技术栈的优势与应用1.跨平台:Java技术栈具有跨平台的特性,可以在Windows、Linux、Mac OS等操作系统上运行,降低了开发成本和运维难度。

2.丰富的生态:Java技术栈拥有丰富的开源库、框架和工具,为开发者提供了强大的支持。

java card标准

java card标准

java card标准
Java Card是Java的一个子集,专为智能卡等资源受限设备设计。

其以Java Card Platform specifications(爪哇卡平台规格)为依循标准,此技术规格标准由升阳电脑所研发。

Java Card的主要特点及诉求在于移携性与安全性。

在语言级别,Java Card的所有语言结构都存在于Java中并且行为相同。

这意味着Java Card程序能被Java编译器编译成Java类文件,类文件由特定于Java Card平台的工具进行后续的处理。

但是Java Card 不支持许多Java语言功能,例如char、double、float和long类型,以及对象的finalization、对象克隆等。

此外,Java Card的字节码是由Java Card虚拟机运行的Java Card 字节码,是标准Java虚拟机运行的Java字节码的功能子集,但具有不同的编码以优化大小。

与通过编译相同Java源代码获得的Java小程序相比,Java Card小程序通常使用更少的字节码。

这节省了内存,这是资源受限设备(如智能卡)的必需品。

同时,作为设计权衡,不支持某些Java语言功能和大小限制。

存在克服大小限制的技术,例如将应用程序的代码分成低于64K限制的包。

以上内容仅供参考,建议查阅关于java card标准的资料获取更全面和准确的信息。

Java智能卡技术研究

Java智能卡技术研究

Java智能卡技术研究摘要:Java智能卡技术制订了一种安全、便捷且多功能的智能卡平台规范,已成为智能卡的主流发展趋势。

随着我国信息化建设的不断推进和信息技术的持续发展,Java卡已在身份认证、电子支付和信息安全领域得到了广泛的应用。

关键词:Java 智能卡技术研究Java智能卡,顾名思义就是一种能运行Java语言程序的智能卡。

其实质是,在资源非常有限的智能卡环境中,实现对Java语言部分子集的支持,从而实现能够在智能卡中运行利用这部分Java语言子集开发的应用程序的目的。

因此,可以说Java智能卡是Java嵌入到智能卡中的一种新的应用。

Java卡的出现,使原有嵌入式设备只能实现单一或有限应用的局面得以突破,使得真正意义上的一卡多应用成为现实。

1 Java智能卡的基本概念Java语言的最大特点是平台无关性,即在不同的系统平台上,都可以使用相同的代码。

Java语言的这一特性使得应用程序的移植变得更加容易。

Java智能卡又称为Java Card,Java智能卡技术的原理是在智能卡硬件系统上构建一套软件平台。

该软件平台需要实现Java程序的下载、安装以及执行功能。

其中Java程序的下载和安装功能由Java 智能卡的运行环境实现,而Java智能卡程序的执行则需要Java智能卡的运行环境、卡内虚拟机以及Java智能卡基础类库共同协调完成。

因此,可以说Java智能卡实际上是智能卡硬件系统和提供解释执行Java应用程序的软件系统的有机结合体。

2 Java智能卡的基本结构及原理2.1 从系统结构上看,Java智能卡主要由Java Applet应用层、Java 智能卡软件平台层,以及智能卡本地系统层1)Java Applet应用层。

Java智能卡规范,将运行于Java智能卡中的应用服务程序称为Java Applet。

该层相当于Java智能卡应用系统中的应用服务层。

一个Java智能卡中,可以根据需要下载多个应用各不相同的Java Applet应用程序,从而实现一卡多用的功能,例如,可以在一个Java智能卡中,下载用于实现地铁、汽车、网银、水费、气费等代收功能的Java Applet应用程序。

JavaCard开发教程之入门篇

JavaCard开发教程之规范多年以前,Sun微系统公司实现了智能卡和类似的资源约束设备的潜能,并且定义了一组Java技术子集规范来为它们创建应用程序,Java Card小应用程序。

支持这些规范的设备称为Java Card平台。

在一个Java Card平台上,来自不同的供应商的多个应用程序可以安全地共存。

一个典型的Java Card设备有一个8或16位的运行在3.7MHz的中央处理器,带有1K 的RAM和多于16K的非易失性存储器(可编程只读存储器或者闪存)。

高性能的智能卡带有单独的处理器和加密芯片,以及用于加密的内存,并且有一些还带有32位的中央处理器。

Java Card技术规范目前是2.2版,由三部分组成:·Java Card虚拟机规范,定义了用于智能卡的Java程序语言的一个子集和虚拟机。

·Java Card运行时环境规范,进一步定义了用于基于Java的智能卡的运行期行为。

·Java Card应用编程接口规范,定义了用于智能卡应用程序核心框架和扩展Java程序包和类。

Sun还提供了Java Card开发工具箱(JCDK) /products/javacard/,包含了Java Card运行期环境和Java Card虚拟机的引用实现,和其它帮助开发Java Card 小应用程序的工具。

本文的第二部分将详细讲述JCDK。

Java Card技术和J2ME平台让我们比较一下Java Card和J2ME平台技术:图. Java Card技术和J2ME平台CDC和CLDC配置以及它们JavaCard开发教程之程序元素完整的Java Card应用程序由一个后端应用程序和系统、一个主机(卡外)应用程序、一个接口设备(读卡器)和卡上小应用程序、用户证书和支持软件组成。

所有的这些元素共同组成一个安全的端到端应用程序:图1. Java Card应用程序的体系结构一个典型的Java Card应用程序不是孤立的,而是包含卡端、读取端和后端元素。

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


t net 1.4 Java 智能卡
ne k. 1996 年 11 月,Sun 公司正式发布 JAVA Card1.0 版本的规范。现在 Java 卡的最新的规范是 2.2 k. oo 版。
oo nb 其实 Java 卡的实质是一部功能齐全、但规模较小的电脑,其硬件主要是为了保证 Java 卡的运 b c 行环境的需要。
※ 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 所示。

JAVA卡技术概述

JA V A卡技术概述---------------------------------------------------------------------------------------------------------------------- 编辑整理:编辑:王鹏来源:门禁关键字:JA V A爪哇卡(JavaCard)技术可使以爪哇语言所写成的程序,在智能卡和其它资源受限装置上执行。

本文将让您一览爪哇卡技术,包括该系统的结构和组件。

本概述的目的在让您对爪哇卡技术有一个整体性了解,并介绍有关爪哇卡系统的重点和基本概念,以利程序开发者设计程序之用。

一、爪哇卡技术之组件爪哇卡技术包括下列部分:*精简后之爪哇程序语言以及适合智能卡应用的虚拟机(JavaCardVirtualMachine,JCVM)定义*核心之爪哇卡应用程序接口(ApplicationProgrammingInterface,API)及其延伸部分*爪哇卡之执行时期环境(JavaCardRuntimeEnvironment,JCRE)爪哇卡应用程序接口和执行时期环境是以智能卡工业标准ISO7816为模型而设计,因此,爪哇卡平台可轻易支持跟ISO7816第一到第六部分兼容的智能卡系统和应用。

爪哇卡应用程序被称为applets。

爪哇卡平台可支持多重应用(multiapplication)环境。

爪哇卡应用程序则是在爪哇之执行时期环境内处理和执行。

二、精简之爪哇卡语言若智能卡的程序可使用爪哇程序语言的所有功能写成当然最好,不过对智能卡和其它资源受限装置来说,由于运算资源有限,要完全支持爪哇程序语言是不可能也不切实际的事。

一般智能卡是以1K的随机存取内存(RAM),以及16K的非挥发性内存(EEPROM或RAM)和24K的只读存储器(ROM)规格出现,因此,爪哇卡平台仅能支持经小心选取且已规格化而有精简功能的爪哇语言。

此精简爪哇语言包含之功能,适于设计智能卡以及其它小型装置的程序,同时还能保留爪哇程序语言以对象为导向(object-oriented)的能力。

JavaCard和GlobalPlatform介绍

JavaCard & GP介绍
• 一. Java卡概述 • 二. Java卡技术 • 三. GP规范简介
2
1
Java卡简介
• 什么是Java卡? • 为什么使用Java卡? • Java卡硬件和软件要求 • 国内Java卡芯片使用现状
3
什么是Java卡?
Java卡是指能运行Java程序的智能卡,针对这种新的平台,Sun 公司的Java Soft部门制定了Java Card技术规范。 Java卡技术规范,包括Java Card VM(Java卡虚拟机)和API的 详细信息。Java Card VM位于智能卡的底层OS上,使用通用的编程语 言和系统接口屏蔽了不同的智能卡硬件和OS差异。Java卡的框架定义 了供应用程序开发人员使用的API。Java卡的应用程序成为Applet, 每个Applet由唯一的AID(应用程序标识符)来识别。
IBM公司提供的Java智能卡编程插件,由于提供了卡片模拟器,可 以在Eclipse进行Java Card Applet的开发,调试。
15
Java卡开发基础
Java卡APIs Java卡APIs是由一些为根据ISO 7816模式编程智能卡 卡应用而定制的类组成的。包括三个核心包和一个扩 展包。 核心包 ‐ng ‐javacard.framework ‐javacard.security 扩展包 ‐javacard.crypto
24
Java卡开发基础
Process:JCRE调用这个方法指示该applet处理一个 输入的APDU命令
‐处理过程 检查命令结构 根据INS进入不同流程 返回执行结果给终端 ‐执行过程中,applet可以主动跑出ISOEXception 该异常会被JCRE自动捕获,其他异常不能自动被JCRE捕 获
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

public tjdfile mf;
// MF 对象
public tjdfile cdf;
// 当前 DF 对象
//------------------------------------------------
public tjfilesystem() {
mf = null; cdf = null;
Java Card 开发技术初探
金邦达宝嘉集团上海办事处 孟宏文 上海市银城东路101号汇丰大厦13F,200120
关键词: JavaCard,卡片操作系统(COS),智能卡
摘要
本文介绍如何优化Java卡的软件开发,及如何构造一个通用的软件类库来 针对多变的应用需求,快速开发出合乎市场需求的卡片操作系统。
} //-----------------------------------------------public boolean canRecieve() {
if ( ins is case3 command ) return true; // pcode!!! return false; } }
byte[] apduBuffer;
if (selectingApplet())
return;
apduBuffer = apdu.getBuffer();
if (apduBuffer[ISO7816.OFFSET_CLA]!= 0x90 )
ISOException.throwIt(ISO7816.SW_CLA_NOT_SUPPORTED);
} } //-----------------------------------------------private void fverify_pin(APDU apdu) throws ISOException {
// 取APDU 数据数组 // 检查P1,P2是否合法 // 检查Lc,data 或 Le 是否正确 // 比较 口令 // 返回结果 } //-----------------------------------------------private void fread_binary(apdu) throws ISOException { // 取APDU 数据数组 // 检查P1,P2是否合法 // 检查Lc,data 或 Le 是否正确 // 读取 文件数据 // 返回结果 } }
回来再考虑一下“应用”本身,智能卡应用都是以ISO7816为基础,然后 再添加具体的应用需求,它应有比如应用类型和状态等属性,还有处理事件(输 入数据)的方法。在做C++程序时,我们通常会设计一个纯虚类作为父类,定义 好所有的公共行为供子类重载。Java也支持纯虚类和单重派生(考虑一下为何 不支持多重派生?),如果我们将应用设计成虚类,最后的具体实现至少是第三 级子类了,因为我们肯定会将ISO标准的指令和一些通用指令放在二级类。考 虑到Java是编译型的,在虚拟机上运行时,过多的类继承将在寻址上极大的降 低程序运行的速度,毕竟Java卡的硬件不可能和PC相提并论啊!所以基类应当 设计成一个包含ISO指令及其他公共指令的不含纯虚函数的类,它不用派生子 类就可以直接运行。一个通用的、标准的、可重复构建的小型COS诞生了,它 是一个最简单的“应用”。
} public static void install(byte[] bA, short bOfft, byte bLen)
throws ISOException { new MyCOS (bA, bOff, (byte)bLen ); //创建一个类实例 } //------------------------------------------------
public boolean select() {
return true; } //-----------------------------------------------public void deselect() {
return; } //-----------------------------------------------public void process(APDU apdu) throws ISOException {
有了tjapdu后,我们可以在MyCOS.Process函数里一次将数据全部复制到 tjapdu的一个实例,然后将它传给功能函数,函数在得到输入数据并做相应处 理后,可能要返会数据,我们约定使用Le标明返回数据的长度,返回数据则放 在pdata里,这样每个函数只是按照约定将数据放入指定的域,真正返回到外 部统一在MyCos.Process里处理,这样代码效率提高很多啊,而且也不容易 出错。
将这个Appleபைடு நூலகம்编译、转换后,下装到卡上,就可以测试了。是不是很简
单?是,但这只是个例子,告诉我们一些最基本的元素。其实大多数的应用都 要创建许多文件和密钥,标准的文件有二进制文件、线性定长文件、循环文件
等等;密钥有PIN,PUK,DESKEY,RSAKEY等;要实现分层的文件管理机制,对
文件的各种操作的前提也都可定义不同的安全控制;而密钥也可以设置指定的 用途,并实现密钥管理以支持复杂的安全控制策略。在应用阶段还有要考虑应 用本身的一些逻辑和安全控制。真是很复杂啊。下面我们先看一下一个基本的 卡操作系统(COS,即我们正在讨论的Applet)的命令处理过程:
本文将介绍在开发Java卡应用时的几点体会,希望能为正在做Java卡开发 或想做这方面工作的同仁提供一点思路,开发出务实高效、结构清晰和方便维 护及可重用的Java应用。卡的基础知识、卡片操作系统和Java语言等基础知 识对理解本文是必要的,这里就不赘述了。
一、JAVA 卡应用结构的优化
Java卡应用的开发其实和其他软件开发是一样的,应用的主体是一个特殊的 Applet,特殊是因为它必须从javacard.framework.Applet这个类派生。 Java卡2.1规范定义了几个标准的包(Package),它涉及Java卡Applet基本 的接口与工具、安全机制和加密等方面的接口函数,必须熟练掌握。Java卡仅 支持Java语言的一个子集,所以在编程时也要特别注意。VISA和其他组织也定 义了一些行业规范(Addon),对我们开发行业应用也提供了标准的安全机制和 接口。在开发Java卡的过程中,如果按照厂商提供的例子的模式去开发的话, 结构和易读性不是很好,对后期的维护和代码重用也比较困难,所以有必要对 应用结构做进一步的优化,下面先看一下这个Applet最简单的实现。
}
//------------------------------------------------
public void reset() { //复位函数必须定义,否则,嘿嘿. . .
cdf = mf;
if(cdf!=null) cdf.selected();
}
//------------------------------------------------
序言
随着智能卡的发展,Java卡已经被市场广泛认同并快速发展,成为智能卡 的发展趋势,据估计,目前全球有30%的手机SIM卡是Java卡,在金融业和其 它应用行业也发展迅速,相信会逐渐成为主流产品之一。为什么呢?因为有两 个主要原因:一是Javacard开发采用Java语言,配备了整套标准的Java卡编 程的API,使得开发人员无需了解复杂的智能卡硬件,就可以进行智能卡应用 的开发,从而大大减少开发时间和降低开发难度;二是支持一卡多用和重用。 支持一卡多用是指Java卡上可以同时存在多个不同的应用。这些应用可以来自 同一个供应商,也可以来自不同的供应商。这样一张Java卡就可以完成不同的 功能,重用是指Java卡上的应用可以根据需要进行删除或添加新的应用,而无 需更换卡片,这样就大大增强了智能卡的灵活性和生存力。
下一个要考虑的是文件系统如何实现,文件系统其实就是一个包含文件对 象、密钥、安全策略等要素的集合,它包含根目录和子目录,还有文件搜索的 方法实现,只要规划好文件系统的设计,后续的处理就会简单许多,我们暂时 不考虑密钥和安全策略的问题,先实现文件系统的类:
public class tjfilesystem {
APDU命令 ->
传 输


->
令 解



->
件 管


传 -> 输

-> APDU响应数据
图一:命令处理过程
从这个过程和Applet的实现做比较,除了没有实现文件管理,其它基本有 了雏形。似乎可以开始了,慢!在每个功能实现的函数里,都是千篇一律、几 乎相似的代码,看上去很是胸闷,运行效率估计也很低。有没有解决办法?我 们先从解决这个问题展开,首先定义一个tjapdu的类来代替标准的APDU类。
package com.goldpac.jcapp; //包名称 import javacard.framework.*; //引用的包
public class MyCOS extends javacard.framework.Applet {
protected MyCOS (byte[] buffer, short offset, byte length) { register(); //向JCRE注册自己的实例
public boolean selectByFid(byte[] pfid) {
//在当前目录下找匹配的文件,未找到则看是否为3F00
//找到返true; 否则返false
}
}
tjdfile是描述DF行为的类,它类似一个容器,包含EF、DF和密钥,当然 也应有一个“父亲”指向上层的DF,具体细节我们在后边讨论。
public class tjapdu { public byte cla, ins, p1, p2; public short lc, le; public byte[] pdata;
相关文档
最新文档