ISO7816智能卡APDU命令详解

需积分: 46 4 下载量 2 浏览量 更新于2024-07-29 收藏 399KB DOC 举报
"APDU命令是智能卡与读卡器之间通信的一种协议,遵循ISO7816标准。本文档整理了ISO智能卡通用APDU命令集,详细介绍了10个基本的APDU命令,包括读取、写入、更新和擦除二进制数据,读取和写入记录,追加记录以及获取和存储数据对象等功能。" APDU(Application Protocol Data Unit)是ISO7816标准定义的一种通信协议,用于智能卡(如SIM卡、CPU卡等)与外部设备(如读卡器)之间的数据交换。每个APDU命令由五部分组成:CLA(Class)、INS(Instruction)、P1和P2参数以及可能的数据区和响应数据。 1. **READBINARY** 命令(CLA: 00/04, INS: B0)用于读取带有透明结构的EF(文件)内容的一部分。它允许读取指定位置的二进制数据,通常用于获取卡片中的固定数据块。 2. **WRITEBINARY** 命令(CLA: 无指定,INS: D0)用于将二进制值写入EF。此命令可以更新卡片上的数据,但需要确保卡片支持写操作且具备相应的权限。 3. **UPDATEBINARY** 命令(CLA: 00/04, INS: D6)用于启动使用APDU命令中给出的位来更新EF中的已有位。这个命令允许对EF中的特定位进行修改,而不是替换整个数据块。 4. **ERASEBINARY** 命令(CLA: 无指定,INS: 0E)允许从指定偏移开始,将EF的一部分内容置为其逻辑擦除状态。这通常意味着将数据设置为特定的默认值或全零。 5. **READRECORD** 命令(CLA: 00/04, INS: B2)用于获取EF的指定记录内容或记录的一部分。记录可以理解为文件中的数据块,可以按序号读取。 6. **WRITERECORD** 命令(CLA: 无指定,INS: D2)有多种操作模式:直接写记录、逻辑“或”更新记录、逻辑“和”更新记录。它可以用来创建、修改或与现有记录数据进行逻辑运算。 7. **APPENDRECORD** 命令(CLA: 00/04, INS: E2)用于在线性结构的EF末尾添加记录,或者在循环结构的EF中写入记录号1。这意味着可以向文件中追加新的数据。 8. **UPDATERECORD** 命令(CLA: 00/04, INS: DC)与UPDATEBINARY类似,但作用于特定记录,使用APDU命令中给出的位来更新指定记录的内容。 9. **GETDATA** 命令(CLA: CA)用于在当前上下文中检索原始数据对象或结构化数据对象中的一个或多个数据对象。这通常用于获取卡片中的特定信息,如持卡人姓名、余额等。 10. **PUTDATA** 命令(CLA: DA)则用于在当前上下文中存储原始数据对象或包含在结构化数据对象中的数据。这个命令用于更新卡片上的信息。 这些APDU命令构成了智能卡交互的基础,通过它们,读卡器能够控制和访问卡片上的数据,执行各种操作,从而实现身份验证、交易处理等功能。理解和熟练运用这些命令对于开发智能卡应用和进行卡片测试至关重要。