You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

智能卡APDU响应的数据字段是否包含自身长度标识?

关于APDU响应数据长度标识的说明

我来帮你理清这个问题——其实APDU响应里的长度指示分两种典型场景,和你提到的61 1b案例直接相关:

1. 卡片先返回"待读取"状态码的情况

当你发送00 A4 00 00(不带Le字段)这类指令时,卡片返回61 1b,这里的SW1=61是标准状态码,意思是还有数据未返回,而SW2=1b(十六进制转十进制是27)就是明确告诉你剩余待读取的数据长度。

这时候你需要发送GET RESPONSE指令来获取完整数据,比如:

00 C0 00 00 1b

这里最后一个字节1b就是从之前的SW2里拿到的长度,执行后卡片会返回27字节的实际数据,再加上成功状态码90 00。

2. 卡片直接返回完整数据的情况

如果你的APDU指令里指定了Le字段(比如00 A4 00 00 00,Le=00表示请求最大长度),卡片会直接返回完整的响应数据,再加上状态码90 00。这种情况下,数据字段内部不会包含单独的长度标识字节——数据的实际长度就是返回的字节数(排除最后的SW1和SW2),或者由你指定的Le来限制(如果卡片返回的数据长度小于等于Le的话)。

举个例子,假设你发送带Le的SELECT指令后,卡片返回:

6F 19 84 08 A0 00 00 00 03 00 00 00 A5 0D 9F 6E 06 12 34 56 78 90 00

这里前面的6F 19 ... 78是实际数据(共25字节),90 00是成功状态码,数据里没有额外的长度字节,你直接通过计数就能知道数据长度。

总结一下:

  • 数据字段本身不会自带长度标识
  • 长度信息要么通过61 XX状态码里的SW2传递(需要后续GET RESPONSE)
  • 要么由你指定的Le和实际返回的字节数来确定(直接返回完整数据的场景)

内容的提问来源于stack exchange,提问作者Berbus

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:36:53