首页 > 编程知识 正文

apdu指令错误,cpu卡apdu命令

时间:2023-05-06 08:22:57 阅读:238515 作者:1147

一条命令APDU含有一个头标和一个本体。本体可有不同长度,或者在相关数据字段为空时,整个可以不存 在。

 头标由四个数据元组成,它们是类CLA(ClAss)字节,命令INS(INStructic,n)字节和两个参数Pl和P2 (Parameters 1 and 2)字节,如图1所示。类字节仍旧用于识别应用和它们专有的命令组。例如,GSM使用 类字节‘AO’,而代码‘8X’则最常用于公司专用(私用)命令。相反,基于ISO的命令都用类字节‘OX’ 编码。标准另外规定了类字节用于识别安全报文和逻辑通道。虽然如此,仍然和前面所述把类字类当做应用 识别符使用是相容的。类字节的编码参见表1和表2


图1 命令APDU的结构

  表1 按照ISO/IEC 7816-4的最重要的类别字节(CLA)的编码

  在命令APDU中的下一个字节是指令字节,它对实际的命令编码。这个字节的几乎全部的地址空间都可以使 用,而惟一的限制是只可以使用偶编码。这是因为T=0协议允许在回送的命令字节中用把先前的字节增量1来 激活可编程电压。因此,命令字节永远是偶数的。

  表2 关于类字节的适用概况的补充说明

  两个参数字节主要用来提供更多的关于指令字节选择命令的信息。于是,它们主要用来作为命令不同选项 的选择开关。例如,把它们用来选择SELECT FLE的不同选项或是规定READ BINARY的区距。

  接着头标的下一段是本体,除有了长度规定之外,它可以被略去,本体承担了双重角色。首先,它规定了 送给卡的数据部分的长度(在Lc字段),以及由卡回送的数据部分的长度(在Le字段)。其次,它含有发送 给卡的有关命令的数据。如果Le字段之值为‘00’,则终端期待着卡传送这条命令最大可用数量的数据,这 是关于长度的数值规定的惟一例外。

  Le和L字段通常为1字节长。然而能够把它们转换为每个有3字节长的字段,这样可用来表示高达65 536的长 度,因为第1字节中含有扩展符序列‘∞’,参见图2。标准已经规定这个三字节长度的规格是为将来的应用 的,但由于目前可用存储器大小的限制这一点尚未能实现。

  前面所述命令APDU的各部分可以组合成四种一般的个案如图3所示。


图2 Le/Lc字段的结构


图3 命令APDU的四种可能的个案

 

 

详情请参考:http://apps.hi.baidu.com/share/detail/37823042

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。