我已经开始使用 JavaCards 并试图掌握 CLA 字节的含义。
如果要读RFC 5.4.1 类字节 http://www.cardwerk.com/smartcards/smartcard_standard_ISO7816-4_5_basic_organizations.aspx#table8
5.4.1 类字节
根据与表 9 结合使用的表 8,类别字节
命令的 CLA 用于指示命令和响应在多大程度上符合 ISO/IEC 7816 的本部分以及适用时(参见表 9)、安全消息传递的格式和逻辑通道号。
那么... CLA 标志用于指示,但具体是什么?因为,表格和描述对于初学者来说相当困难,我知道通常使用下一个 CLA 字节:0x00, 0x80, 0x84.
例如如果从表中读取内容:
我明白为了良好的发展 - 我应该阅读GlobalPlatform
规格,有关确切卡的规格(我的是NXP one https://smartcard-atr.appspot.com/parse?ATR=3B8880014A434F50763234315E)和其他相关材料,但我承认,这些内容很难理解。
我期望以下内容(伪表):
- 0x00 -> 用于从文件系统读取流
- 0x01 -> 用于将字节缓冲区写入内存块
- 0x02 -> 调用 AES/RSA 方法
CLASS 字节在 ISO 7816-4 中定义。第一位表示行业间类别。 Java Card 小程序应按照该行业间标准运行。 Global Platform 是管理和维护卡的另一个规范,所有命令都将具有类字节 0x80 - 0x8F。类字节 0xFF 在某些情况下用于与读卡器通信,否则对卡无效。
CLA 的行业间含义有 3 个主要功能:
功能1:链接
bit5 = 1 表示当前命令不是链中的最后一个命令,这意味着多个 APDU 都属于一起,因此卡可以执行其他操作
功能 2:安全消息传递
位 4+3 用于表示当前命令的安全消息传送状态。这意味着 APDU 已通过身份验证(例如 MACed)并且数据已加密(例如分组密码)。命令头从未加密。
功能3:逻辑通道
bit2+1用于标识逻辑通道号。逻辑通道是通过卡的并行通信接口,因此可以在通道 0 上选择小程序 A,在通道 1 上选择小程序 B,同时两个小程序都保持其内部状态(没有 RAM 重置)。大多数卡不支持逻辑通道,或者您必须显式启用它们。
CLA 字节是 Java 卡初学者的典型陷阱,通常最好从 0x00 开始。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)