执行APDU生物特征验证指令时出现6982错误的技术求助
ISO 7816卡上指纹匹配验证6982(SW_SECURITY_STATUS_NOT_SATISFIED)错误排查方案
问题背景
基于ISO 7816标准实现卡上指纹匹配验证功能,前两步设置阈值、注册指纹模板均返回9000成功响应,但使用同一指纹执行验证时收到6982错误码,含义为SW_SECURITY_STATUS_NOT_SATISFIED(未满足验证访问条件或未通过SM提交PIN)。
已执行指令
第一步:配置阈值与生物特征参数
Send=>8024008724B0007F6075800100830100A1178101088201058702010188020005B10786020EC987011E Get<=9000
第二步:注册指纹模板
Send=>8024008758B0007F2E538151500F9C26109B15199C341C9A15239D2D2B9C4F2BBB5C2B5B1F31BB5B379A193D9D46419B34459C09479F286EBB2F759C0778411E7D5F597DB80980A32783BB0B90A62D935A279A9C24A79E1BADA73AB995 Get<=9000
验证步骤(触发6982错误)
Send=>0020008758B0007F2E538151500F9C26109B15199C341C9A15239D2D2B9C4F2BBB5C2B5B1F31BB5B379A193D9D46419B34459C09479F286EBB2F759C0778411E7D5F597DB80980A32783BB0B90A62D935A279A9C24A79E1BADA73AB995 Get<=6982
排查方向与解决步骤
1. 修正验证指令的CLA字节
前两步配置指令使用80作为CLA字节,而验证指令用的是00。部分智能卡要求生物特征验证需使用与配置阶段一致的CLA标识安全上下文,尝试将验证指令的CLA改为80后重试:
Send=>8020008758B0007F2E538151500F9C26109B15199C341C9A15239D2D2B9C4F2BBB5C2B5B1F31BB5B379A193D9D46419B34459C09479F286EBB2F759C0778411E7D5F597DB80980A32783BB0B90A62D935A279A9C24A79E1BADA73AB995
2. 检查安全域与前置权限
- 确认卡是否要求先完成PIN验证解锁生物特征权限,若需前置PIN,先执行PIN验证指令(如
0020000004XXXXXX),获得安全上下文后再发起指纹验证。 - 核对第一步配置指令中的安全属性段
820105,确认是否允许无PIN前置的指纹验证。若卡强制绑定PIN,需调整配置参数或补充PIN验证步骤。
3. 排查指纹模板匹配有效性
- 验证时的指纹采集质量可能低于注册模板(如角度偏移、按压力度不足),导致匹配分数低于设置的阈值
88020005。尝试重新采集指纹模板验证,或适当降低阈值(如改为88020003)后重新配置。 - 对比第二步注册与验证指令的模板数据(
500F9C26...段),确认传输过程中无字节错误。
4. 确认验证指令的INS参数正确性
验证指令使用的20通常为PIN验证的INS码,部分卡的生物特征匹配可能对应自定义INS(如24)。查阅卡的技术手册,替换为正确的INS指令码后重试。
5. 重置卡安全上下文
若卡的安全状态因异常操作残留,发送复位指令00000000重启卡,重新执行配置、注册、验证全流程。
内容的提问来源于stack exchange,提问作者Bouls
相关产品推荐
相关产品推荐

