Java Card APDU中建议的数据字段大小是多少?在陈志群的Java Card Technology for Smart Cards: Architecture and Programmer's Guide书中,它提到Le字段最多允许255。

我们是否对APDU命令解释如下:

|<----------------------- 255 Bytes total ------------------------>|
|<- CLA -><- INS -><- P1 -><- P2 -><- Lc -><---- DATA ----><- Le ->|

因此,如果CLA,INS,P1,P2,Lc,Le均为1字节,则应假定可以安全地仅将249字节设置为DATA区域?

对于APDU Response,我们来解释:
|<----------------------- 258 Bytes total ------------------------>|
|<-------------------------- DATA ------------------------><- SW ->|

可以安全地将响应数据设置为256字节(SW为2字节),包括数据响应和SW在内的总响应为258字节。

考虑到我们不得不面对可能无法进行链接并且必须自己手动处理数据流的情况,安全地分块发送和接收数据还有哪些其他考虑因素?

最佳答案

Lc和Le字节可以发信号通知最多保持/请求0xFF字节。因此,对于第4种情况的命令APDU,您有6(header + lc + le)+ 0xFF = 261个字节。对于最大响应,您需要256字节+ 2(状态字)= 258字节。这就是该标准的建议。但是,不同的硬件 token 可能具有不同的实现,因此这可能不是100%准确的。如果需要更多数据,则需要实现ExtendedLength。

10-01 11:59
查看更多