本文转载自:http://map.im/apduintroduce

命令格式

APDU命令由命令头和命令体组成: CLA | INS | P1 | P2 | Lc | DATA | Le
命令头: CLA | INS | P1 | P2 
命令体: Lc | DATA | Le

命令各字段含义

CLA:命令报文的类别字节
P1: 参数 1
P2:参数 2
Lc:Data的长度(含4字节mac)
Data:在命令的数据字段中发送的字节串
Le:在向命令响应的数据字段中期望的字节最大数

命令可分为四种情况:

Case1 | CLA INS P1 P2
Case2 | CLA INS P1 P2 Le
Case3 | CLA INS P1 P2 Lc Data
Case4 | CLA INS P1 P2 Lc Data Le

Case1

这种情况时,命令中没有数据送到卡( Lc)中,也没有数据从卡中返回( Le)。
不含安全报文的命令: CLA | INS | P1 | P2 
含安全报文的命令: CLA | INS | P1 | P2 | Lc | MAC
注: Lc = MAC 的长度, 4 字节。

Case2

这种情况时,命令中没有数据送到卡( Lc)中,有数据从卡中返回( Le)。
不含安全报文的命令: CLA | INS | P1 | P2 | Le
含安全报文的命令: CLA | INS | P1 | P2 | Lc | MAC | Le
注: Lc = MAC 的长度, 4 字节。

Case3

这种情况时,命令中有数据送到卡( Lc)中,没有数据从卡中返回( Le)。
不含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data
含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC
注: Lc = 数据的长度 + MAC 的长度( 4 字节)。

Case4

这种情况时,命令中既有数据送到卡( Lc)中,也有数据从卡中返回( Le)。
不含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data | Le
含安全报文的命令: CLA | INS | P1 | P2 | Lc | Data+MAC | Le
注: Lc = 数据的长度 + MAC 的长度( 4 字节)。

响应格式

格式1

| Data | SW1 SW2 |

格式2

| SW1 SW2 |

响应各字段含义

Data:在响应的数据字段中收到的字节串
SW1:状态字 1
SW2:状态字 2

最新文章

  1. ajax测试Demo以及json简单的转化
  2. 为什么高手离不了Linux系统?这就是我的理由
  3. java 21 - 13 IO流之序列化和反序列化
  4. 【转】C++及java在内存分配上的区别
  5. [Leetcode][Python]39: Combination Sum
  6. [置顶] boost使用(六)
  7. j经常使用ava应用server
  8. MiniGUI文档参考手册 基于v1.6.10文本
  9. 使用STM32CubeMX来创建属于自己的工程
  10. Ubuntu 14.04 配置FTP
  11. 简单说说Markdown语法
  12. HTTP协议GET HEAD简单介绍
  13. Bot Framework 搭建聊天机器人
  14. python 字典嵌套字典赋值异常
  15. Python3字符编码
  16. log4j(五)——如何控制不同目的地的日志输出?
  17. window下遍历并修改文件
  18. numpy之meshgrid和where
  19. 如何选择 SQL Server 数据库跟操作系统版本
  20. 判断浏览器是chrome,Opera,Safari,Mac

热门文章

  1. flex Datagrid checkbox
  2. 20155220 2016-2017-2 《Java程序设计》第八周学习总结
  3. 20155233刘高乐 第二周课堂实践以及MyOD
  4. 20145226夏艺华 《Java程序设计》第7&8周学习总结、实验一
  5. SSM-CRUD实战
  6. postgresql parallel join example
  7. Electron小记
  8. Maven学习(一)-----Maven安装配置总结
  9. idea下增加scala
  10. Gradle初使用