非接触卡片APDU指令详解

需积分: 50 52 下载量 147 浏览量 更新于2024-07-20 4 收藏 340KB DOCX 举报
"本文主要介绍了非接触卡片中使用的APDU指令,包括其格式、命令头域、命令体、响应数据格式以及一些常见的APDU指令。APDU是智能卡与读卡器之间通信的标准协议,遵循7816-4规范。" 在智能卡技术中,APDU(Application Protocol Data Unit)指令是卡片与读卡器交互的基础,它们用于执行各种操作,如选择应用、读取或写入数据等。APDU指令格式由7816-4标准定义,通常包含四种情况,这些情况定义了数据传输的不同模式。 APDU命令格式由4字节的命令头和可变长度的命令体组成。命令头包括CLA、INS、P1、P2四个字段,分别表示类别字、指令代码、参数1和参数2,它们共同确定了要执行的具体操作。命令体可能包含Lc、Data和Le字段,Lc指示Data字段的长度,Data用于传递数据,Le指定期望的响应数据长度。 APDU响应数据由返回数据(如果有的话)和两个状态字SW1SW2组成。状态字提供了关于命令执行结果的信息,例如成功执行还是出现错误。SW1表示状态,SW2可能是更具体的错误代码或者补充信息。某些特定的SW1值如高半字节为'9'或'6',可能具有特定的应用含义。 文章还列举了一些交通行业中常见的APDU指令,这些指令广泛应用于非接触式卡片操作: 1. SELECT:选择卡片上的特定应用。 2. READBINARY:读取卡片上指定位置的二进制数据。 3. READRECORD:读取卡片记录,通常用于结构化的数据存储。 4. UPDATEBINARY:修改卡片上的二进制数据。 5. UPDATERECORD:更新卡片记录。 6. GETRESPONSE:获取卡片对前一条命令的响应。 7. GETCHALLENGE:请求卡片生成一个随机数,常用于认证过程。 8. EXTERNALAUTHENTICATION:使用外部密钥进行认证。 9. INTERNALAUTHENTICATION:在卡片内部进行认证。 10. VERIFY:验证个人识别码(PIN)。 11. PINCHANGE/UNBLOCK:PIN码的修改或解锁功能。 12. APPLICATIONBLOCK/UNBLOCK:应用级别的锁定和解锁操作。 13. CARDBLOCK:卡片的整体锁定,防止进一步的交易。 这些指令是智能卡系统中不可或缺的部分,它们确保了卡片和读卡设备之间的高效和安全通信。理解和掌握APDU指令对于开发和维护非接触式智能卡系统至关重要。