第一部分 Java智能卡编程基础第1章 绪言 3
1.1 智能卡简介 3
1.2 Java智能卡简介 6
1.3 发展前景 7
1.3.1 智能卡前景 7
1.3.2 Java智能卡前景 9
第2章 智能卡技术基础 10
2.1 智能卡的分类 10
2.2 智能卡的物理结构 11
2.3 智能卡操作系统 13
2.3.1 通信管理模块 15
2.3.2 命令管理模块 19
2.3.3 安全管理模块 23
2.3.4 文件管理模块 26
2.3.5 智能卡应用系统 27
2.4 智能卡的国际标准 28
第3章 Java智能卡技术基础 35
3.1 Java智能卡基本概念 35
3.2 Java智能卡Applet开发流程 36
3.3 Java智能卡虚拟机 38
3.3.1 JCVM基本结构 38
3.3.2 JCVM的生命周期 40
3.4 Java智能卡API类库 40
3.4.1 Java.io程序包 44
3.4.2 Java.lang程序包 44
3.4.3 Java.rmi程序包 45
3.4.4 Javacard.framework程序包 46
3.4.5 Javacard.framework.service程序包 46
3.4.6 Javacard.security程序包 47
3.4.7 Javacardx.apdu程序包 47
3.4.8 Javacardx.biometry程序包 47
3.4.9 Javacardx.crypto程序包 47
3.4.10 Javacardx.external程序包 48
3.4.11 Javacardx.framework程序包 48
第4章 搭建Java智能卡开发环境 49
4.1 SunJ2SDK概述 49
4.2 SunJCDK概述 50
4.2.1 Converter 52
4.2.2 APDUTool 54
4.2.3 ScriptGen 55
4.2.4 JCRE仿真工具 55
4.3 Eclipse概述 57
4.4 安装配置Java智能卡开发环境 58
4.4.1 J2SDK的安装及配置 58
4.4.2 JCDK的安装及配置 62
4.4.3 Eclipse的安装及配置 63
4.4.4 Cref的开发配置 71
第5章 Java智能卡Applet开发基础 79
5.1 Java智能卡Applet的基本概念 79
5.2 Java智能卡Applet方法详解 80
5.2.1 install()方法 80
5.2.2 register()方法 82
5.2.3 select()方法 83
5.2.4 process()方法 84
5.2.5 deselect()方法 85
5.3 Java智能卡Applet开发基础编程实例 86
第6章 Java智能卡Applet的通信机制 97
6.1 通用智能卡通信基础 97
6.1.1 智能卡通信模型 97
6.1.2 APDU协议 97
6.1.3 TPDU协议 98
6.2 Java智能卡通信API介绍 99
6.2.1 APDU类 99
6.2.2 ISO7816接口 105
6.2.3 APDU异常类 106
6.2.4 与协议相关的APDU方法 106
6.3 Java智能卡通信编程实例 108
第7章 Java智能卡Applet中的类和对象编程 111
7.1 类及对象的基础知识 111
7.2 Java智能卡类层次结构 111
7.3 Java智能卡对象 112
7.3.1 永久对象 113
7.3.2 临时对象 113
7.4 Java智能卡中的异常类及异常处理机制 113
7.4.1 Java智能卡异常类结构 114
7.4.2 Java智能卡异常类原因代码 114
7.4.3 Java智能卡异常的抛出及捕获 114
7.5 Java智能卡类和对象编程实例 116
第8章 Java智能卡Applet中的事务处理方法 123
8.1 原子性和事务处理的基本概念 123
8.2 Java智能卡事务处理 123
8.2.1 定义事务周期 123
8.2.2 开始事务 123
8.2.3 提交事务 124
8.2.4 中止事务 124
8.2.5 事务处理中的临时对象及全局数组 124
8.2.6 Java智能卡事务处理的限制 124
8.2.7 事务处理异常 125
8.3 Java智能卡事务处理编程实例 125
第9章 多应用防火墙和对象共享 131
9.1 应用防火墙 131
9.1.1 防火墙保护机制 131
9.1.2 上下文及上下文切换 131
9.1.3 对象所属及对象访问 132
9.1.4 临时对象及其上下文 133
9.1.5 静态域及其方法 133
9.2 对象访问 133
9.2.1 JCRE上下文及其访问权限 133
9.2.2 Java智能卡入口点对象 134
9.2.3 全局数组 134
9.2.4 共享接口及对象共享 134
9.3 Java智能卡共享接口编程实例 136
9.3.1 共享接口创建 136
9.3.2 共享接口的实现 136
9.3.3 共享接口对象获取 137
9.3.4 共享接口对象使用 138
9.3.5 对象共享中的上下文切换 139
第10章 Java智能卡编程基础综合实例 141
10.1 综合实例的分析 141
10.1.1 JavaPurse包 141
10.1.2 JavaLoyalty包和SampleLibrary包 142
10.2 综合实例的源码 143
10.3 综合实例的运行测试 166
第二部分 Java智能卡应用案例第11章 身份认证与数字签名 187
11.1 身份认证与数字签名的密码学基础 187
11.1.1 对称密码算法 189
11.1.2 对称密码算法的加密模式 198
11.1.3 基于对称密码算法的相互认证 203
11.1.4 报文鉴别码MAC 204
11.1.5 公钥密码算法RSA 205
11.1.6 散列函数SHA-1 209
11.1.7 RSA签名方案 211
11.1.8 椭圆曲线密码体制 216
11.2 身份认证与数字签名编程实例 217
11.2.1 随机数的产生 217
11.2.2 基于DES算法的相互认证 221
11.2.3 SHA-1报文摘要的生成 228
11.2.4 RSA数字签名和验证 231
11.2.5 MAC签名和验证 240
第12章 小额支付的电子钱包应用 244
12.1 中国金融集成电路卡规范中的电子钱包/电子存折 245
12.1.1 电子钱包/电子存折应用概述 245
12.1.2 电子钱包/电子存折应用的文件结构 245
12.1.3 电子钱包的应用命令 247
12.1.4 电子钱包的交易流程 254
12.2 电子钱包应用实例 258
12.2.1 电子钱包应用例程 258
12.2.2 电子钱包应用例程分析 265
12.2.3 电子钱包应用例程说明文档 272
第13章 Java智能卡GSM应用开发 283
13.1 GSM Java智能卡体系结构 283
13.2 GSM Framework介绍 284
13.3 SIM Toolkit Framework介绍 287
13.3.1 Applet触发模块 287
13.3.2 Applet安装删除模块 288
13.3.3 主动式命令处理模块 289
13.3.4 SIM Toolkit Framework系统运行流程 291
13.4 SIMToolkitApplet开发实例 292
13.4.1 Toolkit Applet例程的分析 292
13.4.2 Toolkit Applet例程的源码 295
13.4.3 Toolkit Applet例程的安装及运行结果 300
参考文献 309