移动卡APDU指令错误详解与参考

5星 · 超过95%的资源 需积分: 50 18 下载量 4 浏览量 更新于2024-09-08 收藏 4KB TXT 举报
"APDU指令错误收集" APDU(Application Protocol Data Unit)是智能卡通信协议ISO 7816中定义的一种数据包格式,用于智能卡与读卡器之间的通信。这个错误集包含了在使用APDU指令进行移动卡片开发时可能会遇到的各种错误情况,这些错误代码有助于开发者识别和解决问题。 1. 成功执行: "9000" - 表示APDU命令成功执行,没有出现任何问题。 2. 警告信息: - "6200" - 警告信息未提供,可能意味着某些信息未被返回。 - "6281" - 警告回送数据可能出错,回送的数据可能不完整或格式有误。 - "6282" - 警告文件长度小于Le,表示请求的数据量超过了文件的实际长度。 - "6283" - 警告选中的文件无效,可能是文件不存在或者已损坏。 - "6284" - 警告FCI(File Control Information)格式与P2指定的不符,表明文件控制信息与预期不符。 3. 校验错误: - "6300" - 鉴别失败,可能是指令执行过程中身份验证未通过。 - "63Cx" - 校验失败,x代表允许的重试次数,意味着校验和不正确。 4. 错误状态: - "6400" - 出错状态标志位没有变,表示卡片状态没有更新。 - "6581" - 内存失败,表明卡片内部存储出现问题。 - "6700" - 长度错误,指APDU的长度字段不正确。 5. 不支持的功能: - "6881" - 不支持逻辑通道,卡片不支持多通道通信。 - "6882" - 不支持安全报文,可能卡片不支持特定的安全机制。 - "6884" - 不支持命令链,表示卡片不支持连续发送多个命令。 6. 命令拒绝或条件不满足: - "6901" - 命令不接受(无效状态),例如卡片被锁定或主文件未建立。 - "6981" - 命令与文件结构不相容,当前文件不是所需文件。 - "6982" - 操作条件不满足,如未输入正确的PIN。 - "6983" - 认证方法锁定,PIN已被锁定。 - "6984" - 随机数无效,引用的数据无效。 - "6985" - 使用条件不满足,可能是时间限制或其他条件未达成。 - "6986" - 不满足命令执行条件,如不适当的命令或INS错误。 - "6987" - MAC丢失,指缺少必要的消息认证码。 - "6988" - MAC不正确,表明消息认证码校验失败。 - "698D" - 保留,可能用于未来的错误定义。 7. 数据错误: - "6A80" - 数据域参数不正确,表明输入的数据格式或值有误。 - "6A81" - 功能不支持,如创建文件不允许,目录无效或应用被锁定。 - "6A82" - 文件未找到,可能是因为文件不存在。 - "6A83" - 记录未找到,可能是指定的记录不存在。 - "6A84" - 文件预留空间不足,不足以完成操作。 - "6A86" - P1或P2不正确,指APDU的参数错误。 - "6A88" - 引用数据未找到,可能是数据丢失或被删除。 8. 参数错误: - "6B00" - 参数错误,表明APDU中的某个参数不正确。 9. 类或指令代码错误: - "6Cxx" - Le长度错误,实际长度是xx,表示期望的响应长度与实际长度不符。 - "6E00" - 不支持的类(CLA),表示使用的命令类别不受卡片支持。 - "6F00" - 数据无效,表明接收的数据无法解析或理解。 - "6D00" - 不支持的指令代码(INS),表明卡片不支持特定的命令。 10. 特殊错误: - "9301" - 资金不足,通常出现在金融交易中。 - "9302" - MAC无效,可能是因为消息认证码计算错误。 - "9303" - 应用被永久锁定,可能是因为多次尝试失败导致的。 - "9401" - 交易金额不足,表示交易金额低于最小限额。 - "9402" - 交易计数器达到最大值,可能是指定操作的次数超出限制。 - "9403" - 密钥索引不支持,表明使用的密钥索引无效。 - "9406" - 所需MAC不可用,可能是因为密钥管理问题。 11. 其他错误: - "6900" - 不能处理,一般表示卡片无法执行接收到的命令。 - "6600" - 接收通讯超时,通信过程中没有在规定时间内收到响应。 - "6601" - 接收字符奇偶错,表明接收的数据奇偶校验失败。 - "6602" - 校验和不对,可能是数据传输过程中发生错误。 - "6603" - 警告当前DF文件无FCI,表示选择的文件没有文件控制信息。 - "6604" - 警告当前DF下无SF或KFR-APDU,表明所选文件下没有子文件或预期的APDU格式不正确。 了解这些错误代码及其含义对于调试APDU指令至关重要,可以帮助开发者快速定位问题并修复,从而提高开发效率和卡片应用的稳定性。