ic卡apdu命令介绍
### IC卡APDU命令介绍 #### 一、概述 IC卡(集成电路卡)是一种嵌入了微芯片的卡片,能够存储大量的数据,并且具备一定的处理能力。为了与IC卡进行通信,采用了一种称为APDU(Application Protocol Data Unit)的命令格式。本篇文章将详细介绍ISO智能卡通用APDU命令集,这些命令对于开发IC卡应用来说至关重要。 #### 二、ISO智能卡通用APDU命令集详解 ##### 2.1 读取二进制数据 (READ BINARY) **编号:** 1 **CLA:** 00/04 **INS:** B0 **功能描述:** 此命令用于读取带有透明结构的EF(Elementary File)内容的一部分。它允许读取特定偏移地址开始的数据块。 ##### 2.2 写入二进制数据 (WRITE BINARY) **编号:** 2 **CLA:** - **INS:** D0 **功能描述:** 将二进制值写入指定的EF中。这个命令通常用于初始化或更新EF的内容。 ##### 2.3 更新二进制数据 (UPDATE BINARY) **编号:** 3 **CLA:** 00/04 **INS:** D6 **功能描述:** 使用在命令APDU中给出的位来更新已存在于EF中的位。这种更新方式可以实现位级的修改。 ##### 2.4 擦除二进制数据 (ERASE BINARY) **编号:** 4 **CLA:** - **INS:** 0E **功能描述:** 顺序地从给出的偏移开始将EF的内容的一部分置为其逻辑擦除状态。这通常意味着将数据重置为默认值或空白状态。 ##### 2.5 读取记录 (READ RECORD) **编号:** 5 **CLA:** 00/04 **INS:** B2 **功能描述:** 读取EF的规定记录的内容或EF的一个记录开始部分的内容。这是访问存储在卡上的结构化数据的基本方法之一。 ##### 2.6 写入记录 (WRITE RECORD) **编号:** 6 **CLA:** - **INS:** D2 **功能描述:** - **写一次记录**:直接覆盖现有的记录。 - **逻辑“或”运算**:与已经存在的记录数据字节进行逻辑“或”运算。 - **逻辑“和”运算**:与已经存在的记录数据字节进行逻辑“和”运算。 此命令提供了多种写入记录的方式,适用于不同的应用场景。 ##### 2.7 追加记录 (APPEND RECORD) **编号:** 7 **CLA:** 00/04 **INS:** E2 **功能描述:** 在线性结构EF的结束端添加记录或者在循环结构的EF内写记录号1。这是一个常见的操作,用于向文件末尾添加新的记录。 ##### 2.8 更新记录 (UPDATE RECORD) **编号:** 8 **CLA:** 00/04 **INS:** DC **功能描述:** 使用命令APDU给出的位来更新特定记录。这对于局部修改记录中的某些字段非常有用。 ##### 2.9 获取数据 (GET DATA) **编号:** 9 **CLA:** - **INS:** CA **功能描述:** 用于检索一个原始数据对象或者包含在结构化数据对象中的一个或多个数据对象。可以在当前上下文中使用。 ##### 2.10 存储数据 (PUT DATA) **编号:** 10 **CLA:** - **INS:** DA **功能描述:** 用于存储一个原始数据对象或者包含在结构化数据对象中的一个或多个数据对象。支持写一次、更新和添加等多种存储功能。 ##### 2.11 选择文件 (SELECT FILE) **编号:** 11 **CLA:** 00 **INS:** A4 **功能描述:** 设置当前文件,后续命令可以通过逻辑信道隐式地引用该当前文件。这是进行其他文件操作前必须执行的命令。 ##### 2.12 验证 (VERIFY) **编号:** 12 **CLA:** 00/04 **INS:** 20 **功能描述:** 启动从接口设备送入卡内的验证数据与卡内存储的引用数据(如密码)进行比较。用于身份验证过程。 ##### 2.13 内部认证 (INTERNAL AUTHENTICATE) **编号:** 13 **CLA:** 00 **INS:** 88 **功能描述:** 启动卡使用从接口设备发送来的询问数据和在卡内存储的相关秘密(如密钥)来计算鉴别数据。可以用于鉴整个卡或特定的DF(Dedicated File)。 ##### 2.14 外部认证 (EXTERNAL AUTHENTICATE) **编号:** 14 **CLA:** 00 **INS:** 82 **功能描述:** 使用卡计算的结果有条件地更新安全状态。该计算基于卡先前发出的询问(如通过GET CHALLENGE命令)、卡内存储的可能的秘密密钥以及接口设备发送的鉴别数据。 ##### 2.15 获取挑战 (GET CHALLENGE) **编号:** 15 **CLA:** 00 **INS:** 84 **功能描述:** 要求发出一个询问(如随机数),以便用于安全相关的规程,例如外部认证命令。这是建立安全通信的第一步。 ##### 2.16 管理通道 (MANAGE CHANNEL) **编号:** 16 **CLA:** - **INS:** 70 **功能描述:** 打开和关闭逻辑信道。逻辑信道允许并发执行多个命令序列,提高效率。 ##### 2.17 获取响应 (GET RESPONSE) **编号:** 17 **CLA:** 00 **INS:** C0 **功能描述:** 用于从卡发送至接口设备无法用可用的协议直接传送的APDU(或APDU的一部分)。这对于获取大型数据响应特别有用。 ##### 2.18 包封 (ENVELOPE) **编号:** 18 **CLA:** 80 **INS:** C2 **功能描述:** 用来发送那些不能由有效协议来发送的APDU或APDU的一部分或任何数据串。这是一种特殊的数据传输机制,主要用于非标准或扩展功能。 #### 三、总结 以上介绍的ISO智能卡通用APDU命令集是IC卡开发中不可或缺的部分。通过这些命令,开发人员可以与IC卡进行交互,实现数据的读取、写入、更新等操作,同时也可以进行安全相关的认证和验证。理解和掌握这些命令对于开发高质量的IC卡应用程序至关重要。