JavaCard应用开发详解:从基础到实践

5星 · 超过95%的资源 需积分: 15 14 下载量 200 浏览量 更新于2024-07-22 2 收藏 799KB PDF 举报
"JavaCard应用程序开发三部曲是一份详细的手册,涵盖了智能卡开发的基础知识,JavaCard小应用程序的开发,以及JavaCard主应用程序的开发教程。它讲解了智能卡的基本概念,相关的国际标准,以及JavaCard技术的组件和交互模型。手册还介绍了Sun JavaCard Development工具箱的使用,APDU指令的定义,JavaCard RMI接口的应用,OpenCard框架,J2ME的安全和信任服务编程接口等内容,旨在帮助开发者理解和创建JavaCard应用程序。" 在这份手册中,首先,基础篇介绍了智能卡的历史和基本功能,强调了智能卡的安全特性。它讲解了ISO/IEC7816标准对智能卡的定义,包括物理特性、通信协议和安全措施。智能卡不仅提供安全的存储,还可以包含微处理器,支持复杂的数据处理和加密算法。 第二部分,关于JavaCard小应用程序的开发,手册详细阐述了小应用程序(Applet)的概念,Sun JavaCard Development工具箱的使用方法,如何构建Applet的结构,定义APDU(应用协议数据单元)指令,以及如何利用构造器和JavaCard RMI接口来增强Applet的功能。这些内容对于理解JavaCard应用程序的运行机制至关重要。 第三部分,JavaCard主应用程序开发教程深入探讨了JavaCard应用程序的构成元素,如OpenCard框架,这是一种用于开发JavaCard应用程序的开源工具。此外,手册还详细介绍了JavaCard RMI客户端编程接口,如何生成RMI客户端程序,J2ME环境下的安全和信任服务编程接口,以及如何管理SATSA连接类型和不同类型的连接对象,如APDUConnection和JavaCardRMIConnection。这部分内容对于开发复杂的JavaCard解决方案非常有帮助。 "JavaCard应用程序开发三部曲"是一份全面的指南,涵盖了从基础知识到高级开发技巧的全部内容,适合对智能卡技术和JavaCard编程感兴趣的开发者学习。通过这份手册,读者将能够掌握开发JavaCard应用程序所需的所有关键技能。
2014-05-30 上传
javacard applet 开发实例 正常运行 带jar包 package mifare; import com.ibm.jz.JZSystem; import javacard.framework.APDU; import javacard.framework.Applet; import javacard.framework.ISO7816; import javacard.framework.ISOException; import javacard.framework.Util; public class AmbiqApplet extends Applet { byte[] mifarePassDefault={(byte)0x0b,(byte)0x54,(byte)0x57,(byte)0x07,(byte)0x45,(byte)0xfe,(byte)0x3a,(byte)0xe7}; byte[] mifarePass8={(byte)0x0b,(byte)0x54,(byte)0x57,(byte)0x07,(byte)0x45,(byte)0xfe,(byte)0x3a,(byte)0xe7}; byte[] mifarePass9={(byte)0x0b,(byte)0x54,(byte)0x57,(byte)0x07,(byte)0x45,(byte)0xfe,(byte)0x3a,(byte)0xe7}; byte[] adminPass={(byte)0x40,(byte)0x41,(byte)0x42,(byte)0x43,(byte)0x44,(byte)0x45,(byte)0x46,(byte)0x47,(byte)0x48,(byte)0x49,(byte)0x4a,(byte)0x4b,(byte)0x4c,(byte)0x4d,(byte)0x4e,(byte)0x4f}; public static void install(byte[] bArray, short bOffset, byte bLength) { // GP-compliant JavaCard applet registration new AmbiqApplet().register(bArray, (short) (bOffset + 1), bArray[bOffset]); } public void process(APDU apdu) { short i; byte[] send=new byte[52]; byte[] send2=new byte[24]; // Good practice: Return 9000 on SELECT if (selectingApplet()) { return; } byte[] buf = apdu.getBuffer(); if(buf[ISO7816.OFFSET_CLA]==AmbiqConstant.CLS_AMBIQ) { switch (buf[ISO7816.OFFSET_INS]) { case AmbiqConstant.INS_GET_MIFARE: if(buf[ISO7816.OFFSET_P1]!=0 || buf[ISO7816.OFFSET_P2]!=0) { ISOException.throwIt(ISO7816.SW_INCORRECT_P1P2); return; } /*Get Entire Mifare Ticket data * Returns back the content of the entire sector 8 (3 block 8.0, 8.1, 8.2) and the first 4 bytes of block 9.0; total 52bytes. Filed Length (in bytes) Data Comments CLA 1 0x80 Fixed class for the applet INS 1 0x20 Read entire data P1 1 0x00 Sector number P2 1