7816APDU四种情况

更新时间:2023-10-19 03:37:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

APDU

命令信息APDU有四种情况: 1. 无命令数据,无应答数据 2. 无命令数据,有应答数据 3. 有命令数据,无应答数据 4. 有命令数据,有应答数据

Lc :命令体内的数据长度 Data:要发送的数据

Le:期望中的应答APDU命令数据字段的字节数 Le=0 请求送回最大应答数据字节数 Licc:IC卡在响应接收到的情况2或情况4命令时卡内有效或剩余的数据(由IC卡决定)的实际长度

T=0时IC卡返回数据的方式:

当向IC卡发送的命令需要返回结果时即情况二,四,需要两种情况:

1. Le正确时:(Le

2. Le不正确时(Le=?00 (数据长度不是256)或Le>Licc):向卡发命令,卡先返回6CXX,此处XX代表实际应返回的数据的长度,此时再向卡重发该命令,其中Le置为XX,卡最后返回XX长度的数据。

理解机卡通讯的过程。 举例。

********************************************************************************

>> IDF:80 32 00 00 74 80 30 71 11 02 B2 66 1B 50 84 FD..... ### 我有一个数据0x74 个字节, 属于安全报文,帮忙解一下。 <

### 共解出 0x25 个字节 (即37 字节) >> IDF: 00 C0 00 00 25 ### 那就拿来吧。

<< ret:1, wReplyLen:39,reply: 02 B2 84 03 00 01 02 B4 04 00 00 00 00 83 16 9F 66...

### 给你。(之所以是39, 37字节后跟状态字90 00)

>> smart card. wCommandLen:12, 00 B2 00 0E 07 00 01 14 00 02 02 B2 ### 我要读当前记录的某某位置。 << ret:1, wReplyLen:2,reply: 61 03 ### 3 个字节

>> smart card. wCommandLen:5, 00 C0 00 00 03 ### 拿来吧

<< ret:1, wReplyLen:5,reply: 00 00 09 90 00 ### 给你

--------------------------------------------------------------------------------

>> smart card. wCommandLen:89, 80 32 00 00 54 81 30 51 01 02 B2 E4 32 50 84 FD

### 我有一个数据0x54 个字节, 属于安全报文,帮忙解一下。 << ret:1, wReplyLen:2,reply: 6B 27 ### 出错了, 我不认识

>> smart card. wCommandLen:12, 00 B2 00 0E 07 00 01 14 00 02 02 B2 ### 我要读当前记录的某某位置。 << ret:1, wReplyLen:2,reply: 61 03 ### 3 个字节

>> smart card. wCommandLen:5, 00 C0 00 00 03 ### 拿来吧

<< ret:1, wReplyLen:5,reply: 00 00 09 90 00 ### 给你

智能卡的传输协议命令 文章出处:joywyc 发布时间: 2008/11/21 | 1042 次阅读 每天新产品 时刻新体验一站式电子数码采购中心专业PCB打样工厂,24小时加急出货服务器和存储系统的超新互连解决方案多样化的电子和电气元件 原则上,传输协议应构造的完全独立于应用层的数据和命令,这也是OSI层次模型的意图。遗憾地是,在理 论要求和真正的实践中存在着差异。这里有两条命令其目的仅在于允许传输机制可在应用层上使用,名为 GET RESPONSE(获取晌应)和ENVELOPE(包封)。这里还有另一条命令,MANAGE CHANNEL(通道管理),它 的功能不能由应用层单独使用,这三条命令的功能参见表1~表3。 表1 遵照ISO/IEC 7816-4的GET RESPONSE的功能

表2 遵照ISO/IEC 7816-4的ENVELOPE的功能

表3 遵照ISO/IEC 7816-4 MANAGE CHANNEL的功能

在T=0的协议中,不可能在一个命令一响应循环①中,既发送一个数据字组给智能卡雨同时又从智能卡接收一数据字组,因之,这个协议不支持情况4(Case 4)的命令,虽然它们被经常用到。于是,在T=0协议时被迫使用一个工作区,这样就工作在一种简单的方式中。情况4命令被送至卡,如果它是成功的,一特殊的回送代码被发送给终端。它通知终端,命令已产生了数据正等待着提取,终端于是就发送一条GET RESPONSE命令给智能卡并接收数据。这样就结束了对于第1条命令的命令-响应循环。只要除GET RESPONSE命令之外,没有别的命令被送给卡,则响应数据就可以多次被请求。 当命令在保密通信的电文中被完全加密时,T=0协议中有可能发生传输问题,它既需要不加密的指令字节同时还需要不加密的Le字节。ENVELOPE命令用嵌入一个完整的具有其头标和数据部分的APDU到ENVELOPE命令的APDU的数据中的方法避开了这个限制。这样可以不受任何限制的加密,并可用任何协议传送。同样的方法也用于智能卡所产生的响应之中,它也嵌入在ENVELOPE命令的APDU之中。

逻辑通道允许在单独一张卡中有多达四项应用可相互独立地寻址。在类别字节中用两位来使命令与应用相协调。在使用一新的逻辑通道之前,终端必须明显地经

MANAGECHANNEL命令通知智能卡,向卡表示需用另外的通道。通道号可由终端给出,或由卡在其响应中提供一个空闲的通道号。当被打开的新的逻辑通道是标准通道(0通道)时,卡的表现就好像在复位之后面对着新的通道一样,这就是说,MF是被选择了的,并且未曾达到安仝状态。当一个不是0通道的新逻辑通道被打开后,现行选择的DE和安全状态都被保留了下来。当一逻辑通道被关闭后,相关的文件选择和安全状态均被清除

1) Read Binary

功能:此命令用于读取二进制文件部分或全部的内容。

CLA 00

INS B0

P1 见参数说明

P2 从文件中读取的第一字节的偏移地址

Le 期望读出数据的长度

2) Update Binary

功能:此命令使用给定的数据来更新二进制文件部分或全部的内容。

CLA 00

INS D6

P1 见参数说明

P2 要修改的第一字节的偏移地址

Lc 后续数据域的长度

Data 修改用的数据

3) Read Record

功能:此命令用于读取记录文件中指定记录的内容。

CLA 00

INS B2

P1 记录号

P2 见参数说明

Le 期望读出数据的长度

4) Update record

功能:此命令使用给定的数据来更新记录文件中指定记录的内容。当所指定的文件非记录文件时,命令将终止。

CLA 00

INS DC

P1 P1= 00 表示当前记录

P1≠ 00 表示指定的记录号

P2 见参数说明

Lc 后续数据域的长度

本文来源:https://www.bwwdw.com/article/azof.html

Top