点击打开原文1、智能卡学习资料

APDU( ApplicationProtocol data unit), 是智能卡与智能卡读卡器之间传送的信息单元;

IFD接口设备)与IC卡之间的通讯:

a、首先,IFD发送5个字节的命令头给IC卡,这5个字节的内容告诉了IC卡要做什么操作;

b、然后,IC卡回传一个过程字节给IFD,告诉IFD,IC卡是否支持该操作;

c、如果返回的过程字节告诉IFD——IC卡支持该操作,则接下来就进行数据的传输(如果有的话),数据从IFD输入到IC卡或数据从IC卡输出到IFD;

d、如果返回的过程字节告诉IFD——IC卡不支持该操作,则IC卡回传给IFD两个状态字节SW1 SW2,IFD根据SW1 SW2两字节判断IC卡不支持该操作的原因;

 命令的结构和处理

1、概述

每一条命令均由IFD发起,它通过5字节的命令头告诉卡设备做什么,在卡发送的过程字节的控制下,该命令继续在某一个方向上传输一串数据字节, 为了区分用于输入数据的命令(其中处理过程中,数据字节进入卡)和用于输出数据的命令(其中处理数据字节时该数据离开卡),假设卡和接口设备预先知道数据运送方向。

2、命令头

命令头由5个字节组成,分别为CLA,INS,P1,P2和P3。其中CLA,INS,P1和P2这些参数的值由ISO/IEC7816-4部分定义。

CLA: 表示指令类别(class)。其中值‘FF’被保留用于PPS。注意 ISO/IEC 7816-4 强制‘FF’对于CLA为无效值。

INS:表示指令代码(instruction)。其中值‘6X’和‘9X’为无效值。注意 ISO/IEC 7816-4 强制‘6X’和‘9X’对于INS为无效值。

P1 P2 :表示命令参数。对于不同的指令(INS)P1 P2有不同的含义。

P3:表示数据字节的长度。对命令期间待传送的字节D1~Dn的数目n进行编码。l   在输出数据的传送命令中,P3=0表示从卡传输256字节。l   在输入数据的传送命令中,P3=0表示不从卡传输数据。

3、过程字节

IFD发送完5字节的命令头后,应该等待卡设备传入一个过程字节。有三种类型的过程字节,见下表。

过程字节不同的值表示不同含义:

——如果值为‘60’,表示为一个NULL字节。它要求不进行数据字节的传送。IFD应该等待卡设备传入下一个过程字节。

——如果值为‘6X(≠60)’或‘9X’,表示为SW1字节。字要求不进行数据字节的传送。IFD(接口设备)应等待卡设备传入一个SW2字节。这里对SW2的值无限制。

注意      ISO/IEC7816-4 强制‘60’为无效的SW1值,以及其它任不同于‘9X’和‘6X’的值。

——如果值与INS相等,除‘6X’和‘9X’以外,它是一个ACK字节。则表示运送所有剩余字节(如果存在)Di~Dn。然后IFD(接口设备)应等待卡设备传入一个过程字节。

——如果值与INS⊕FF(异或)相等,除‘6X’和‘9X’以外,它是一个ACK字节。则表示运送下一个数据字节(如果存在)Di。然后IFD(接口设备)应等待卡设备传入一个过程字节。

——如果为其它值,则属无效。

当过程字节为NULL和ACK时,卡设备能继续处理命令;或者当过程字节为SW1 SW2时,卡设备结束命令的处理;或者不响应表示不赞成。

4、状态字节

状态字节SW1 SW2表示命令结束时卡设备的状态。它们的值由ISO/IEC 7816-4 指定。

注   ISO/IEC7816-4 强制6个状态字节值的定义。

‘9000’    命令正常结束;

‘6E00’     CLA不支持;

‘6D00’     CLA支持,但INS不支持;

‘6B00’     CLA  INS 均支持,但是P1 P2错误;

‘6700’     CLA  INS  P1  P2均支持,但是P3错误;

‘6F00’     命令不支持,但是没有找出精确的诊断;

根据定义,在传入的SW2字节的前沿12etu后,命令结束。

APDU命令的结构、处理、常用指令相关推荐

  1. Linux目录结构和常用指令

    文章目录 一.Linux概述 二.Linux下目录结构 系统启动必须 指令集合 外部文件管理 临时文件 账户 运行过程中要用 扩展用的 三.常用指令 clear清屏 ls 指令 查看当前用户名 普通用 ...

  2. APDU命令的结构和处理【转】

    本文转载自:http://blog.csdn.net/yonghenzhita/article/details/36402525 版权声明:本文为博主原创文章,未经博主允许不得转载. 简单说,IFD( ...

  3. 命令行窗口 cmd常用指令 cmd指令大全

    CMD全称command,即命令提示符,是内置在windows图形操作系统内的磁盘操作系统,通过CMD可以方便用户查询比较复杂的信息或快速查找实现某些功能等,比如说打开文件.系统设置等操作,如果可以熟 ...

  4. linux 命令 dsm,群晖常用指令 - osc_sa9nsts3的个人空间 - OSCHINA - 中文开源技术交流社区...

    输入uname –a 回车,用 uname 命令能够看到 NAS 的 CPU 架构.指令集等内容如下: Linux DSM 3.10.105 #23739 SMP Fri Jun 8 12:51:05 ...

  5. mac idea命令精简使用版常用指令

    编辑 control+space 代码补全 command+N 生成代码 alt+enter 快速纠错 Command+Shift+F12 当前窗口最大化 command+p 显示参数 查找 comm ...

  6. JAVA命令行运行、常用工具 指令

    JAVA常用工具 指令 *1.命令窗口的使用/常用指令 *javac *java *javap *2.更为方便的运行Java文件的powershell窗口 ====================== ...

  7. Linux 目录结构及常用命令详细介绍

    目录 一.Linux 目录结构 二.常用快捷键 三.常用命令 1.软件管理 apt ( Advanced Packaging Tool ) 2.帮助命令 --help  info  man 3.显示或 ...

  8. Linux目录结构和常用命令

    Linux目录结构和常用命令 一.Linux目录结构 Linux文件夹很多都是固定的,分门别类,要想快速弄清楚系统的架构,那么哪些目录里面装着哪些文件是干什么用的. 首先,回顾一下Linux系统下文件 ...

  9. Maven-学习笔记03【基础-Maven标准目录结构和常用命令】

    Java后端 学习路线 笔记汇总表[黑马程序员] 黑马程序员(腾讯微云)Maven基础讲义.pdf Maven-学习笔记01[基础-Maven基本概念] Maven-学习笔记02[基础-Maven的安 ...

最新文章

  1. 你有哪些deep learning(rnn、cnn)调参的经验
  2. linux定期清理日志文件
  3. 2016年计算机视觉和图像处理相关的国际会议一览表
  4. SSM + AJAX + JSON 动态下拉框
  5. Google DayDream VR开发
  6. navigationController的NavigationBar和ToolBar的POP或PUSH消失问题
  7. 如何在Windows上使用64位Web浏览器
  8. surging 微服务引擎 1.0 正式发布
  9. mysql查询后调用mysql_free_result_怎么释放_关于mysql_free_result和mysql_close的解惑
  10. Java开源爬虫框架crawler4j
  11. js实现几种依次打印1的方法
  12. 211学校计算机报考人数信息,速查!这些985 211学校已发布考研调剂信息
  13. java ini文件_java应用监控之prometheus、node export、grafana安装和配置
  14. 异常mongodb:Invalid BSON field name XXXXXX:YYYYY.zz
  15. iOS POST 上传图片
  16. SEO搜索引擎优化二十八条经验建议
  17. 多因子量化投资模型策略深度研究
  18. 一起学爬虫(Python) — 19 年轻人,进来学自动化
  19. Java物流成本计算器
  20. 【mud】xyj450里的toy下的buwawa脚本问题

热门文章

  1. TBtools 最新版本/大型插件/依赖下载链接
  2. 微信小程序中css常用属性
  3. 如何用Label mx条码软件生成条形码标签
  4. skyworth E900-S 安装沙发
  5. 安装open_clip时提示错误 请求大佬们帮助
  6. 30天自制操作系统——第九天内存管理
  7. 2016阿里安全峰会重点资料下载
  8. springCache注解详解
  9. [Openwrt 项目开发笔记]:Openwrt平台搭建(一)
  10. msysgit使用注意