依据ISO_IEC_7816-4-2020正确编码APDU扩展Le字段的技术问询
如何正确编码APDU的扩展Le字段
APDU的结构如下:
+------+------+------+------+------+-------------+------+ | CLA | INS | P1 | P2 | Lc | DATA | Le | +------+------+------+------+------+-------------+------+
具体参考ISO_IEC_7816-4-2020标准第9页第5.2节语法中的描述:
若Lc字段不存在,扩展Le字段由3字节组成(1字节设为'00',后跟任意值的2字节);若存在扩展Lc字段,扩展Le字段由2字节(任意值)组成。
问题
- 问题1:若需编码2字节的Le字段,是否意味着Lc字段也必须采用扩展格式(即2字节Lc)?
- 问题2:若需编码3字节的Le字段,是否要求Lc字段必须不存在?还是仅当Lc字段不存在时,才需将Le字段编码为3字节?
(附:ISO_IEC_7816-4-2020标准第9页表1)
解答
问题1
对,根据标准的语法规则,2字节的扩展Le字段只能和扩展格式的Lc字段(2字节)搭配使用。也就是说,如果你要编码2字节的Le,就必须确保Lc是2字节的扩展格式,这是标准定义的绑定关系。
问题2
3字节的Le字段是专门为无Lc字段的场景设计的:
- 标准明确规定,只有当Lc字段不存在时,才需要把Le编码成3字节格式;
- 只要存在Lc字段(不管是普通1字节Lc还是扩展2字节Lc),都不能使用3字节的Le格式。
简言之,3字节Le和Lc字段是互斥的,用3字节Le就必须保证没有Lc字段。
内容的提问来源于stack exchange,提问作者florian.isopp
相关产品推荐
相关产品推荐

