DESFire EV1/EV2标签认证:响应挑战的正确APDU命令问询
DESFire EV1/EV2 认证响应报错问题排查与解决
错误码对应原因
91 1c:认证数据错误(响应值计算错误、长度不匹配)91 ae:认证流程错误(挑战值过期、未执行正确前置步骤)68 82:读卡器不支持当前命令的逻辑信道(通常是未正确选择应用或信道配置问题)
EV1与EV2认证流程核心差异
挑战请求阶段
- EV1:固定使用APDU
00 84 00 00 08获取8字节挑战值 - EV2:需使用
00 84 00 00 0A(Le=10)获取10字节数据(前8字节为挑战,后2字节是认证上下文)
响应发送阶段
- EV1:响应长度固定为8字节,APDU格式为
00 82 00 00 08 [8字节响应](无需带Le) - EV2:响应需包含10字节数据(8字节响应+2字节上下文),APDU格式为
00 82 00 00 0A [10字节响应]
正确的认证流程步骤
- 选择主应用(必须执行)
发送APDU:00 A4 04 00 07 A0 00 00 00 03 00 00,确认返回91 00 - 获取挑战值
- EV1:
00 84 00 00 08→ 接收8字节挑战 - EV2:
00 84 00 00 0A→ 接收10字节数据(前8字节挑战,后2字节上下文)
- EV1:
- 计算响应值
- EV1:用密钥对8字节挑战做DES/3DES加密得到8字节响应
- EV2:用密钥对8字节挑战加密得到8字节响应,拼接之前获取的2字节上下文,组成10字节响应数据
- 发送响应完成认证
- EV1:
00 82 00 00 08 [8字节响应] - EV2:
00 82 00 00 0A [10字节响应]
- EV1:
常见问题排查
- 响应长度不匹配:EV2必须发送10字节响应,若只发8字节会触发
91 1c - 上下文未携带:EV2的响应必须包含挑战返回的后2字节上下文,否则返回
91 ae - 信道未正确初始化:未选择主应用直接发起认证,会导致
68 82或91 ae - 加密算法不匹配:确认使用的密钥类型(DES/3DES)与标签配置一致,算法错误会导致
91 1c
内容的提问来源于stack exchange,提问作者desfire_2
相关产品推荐
相关产品推荐

