JavaCard开发入门:智能卡技术与应用程序构建

需积分: 11 1 下载量 131 浏览量 更新于2024-07-21 收藏 888KB PDF 举报
JavaCard开发手册是一份针对Java卡(一种专为智能卡和其他高度专业化设备设计的Java平台)的初级开发指南。JavaCard技术应用于需要高度安全性的场景,如个人信息安全、身份验证和对敏感信息系统的访问。智能卡凭借其内置的集成电路(IC),提供了非易失性存储和安全处理能力,常常用于存储敏感数据,如医疗记录、信用卡信息或电子现金。 智能卡技术起源于20世纪80年代的欧洲,由ISO国际标准组织和国际电子委员会共同制定的ISO/IEC 7816系列标准定义了智能卡的各个方面,包括硬件规格、接口规范、通信协议、安全机制、应用程序标识符和数据元素等。智能卡设计时强调安全,对篡改非常敏感,通常配备有加密协处理器,支持诸如RSA、AES和DES等加密算法,以保护存储的数据。 智能卡根据其操作方式可分为接触式和非接触式。接触式智能卡通过物理触点与读卡器交互,而非接触式则依赖于近场通信技术,如RFID,在很短的距离内进行无线通信。值得注意的是,智能卡自身不携带电池,只有在与读卡机连接并完成复位序列后才会被激活,进入待命状态,接收来自主机应用程序的命令请求。 对于JavaCard应用程序开发者而言,这本手册将引导他们了解智能卡的基本结构、工作原理、编程模型以及如何设计和实现安全的应用程序。初学者可以通过这份教程学习如何编写Java代码来操作智能卡,管理其资源,并利用其提供的安全特性。然而,必须明确,此教程的内容源自互联网,仅供个人学习参考,未经许可不得用于商业用途,以尊重版权和知识产权。
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