刚到公司老大便发我一份文档《智能卡ISO7816-4规范(中文版)》,然后就让我研究下IC智能卡数据读取和支付。身为一直做.NET开发的我对硬件啥的一无所知,各种无头绪啊,研究了两天后,稍微了解IC智能卡的文件基本结构和指令后,终于让我找到了根节点。其它数据的读取还是毫无头绪,果断问度娘,果然之前有点走偏了,我应该研究的是 《中国金融集成电路(IC)卡规范 (PBOC 3.0)》,好了终于走上正轨,在拜读了一些大神的文章后,终于,身为小小白的我对EMV/PBOC的解析和支付有了一定的了解,但是和大神还差好远,但是希望能帮助到和我一样的小白,同事温故而知新嘛。好了说了这么多的废话,开始正文。

  因为《中国金融集成电路(IC)卡规范》也是以《ISO7816规范》为基础的,这里就先参照《ISO7816规范》来赘述下文件的基本结构和APDU的报文结构,后续再做读取卡片数据的具体操作指令。

先上缩略语:

  APDU       应用协议数据单元

  ATR        复位应答

  CLA        类别字节

  DIR        目录

  DF         专用文件

  EF         基本文件

  FCI        文件控制信息

  FCP        文件控制参数

  FMD        文件管理数据

  INS        指令字节

  MF         主文件

  P1—P2     参数字节

  RFU        保留供将来使用

  SM         安全报文交换

  SW1—SW2   状态字节

  TLV        标记、长度、值

  TPDU       传输协议数据单元

  ...

(1)文件结构

——专用文件(DF)。

——基本文件(EF)。

卡内数据的逻辑组织结构由下列专用文件的结构化分级组成。

——在根处的DF称作主文件(MF)。该MF是必备的。

——其他DF是任选的。

定义了下列两种类型的EF。

——内部EF——那些EF预期用于存储由卡所解释的数据,即,为了管理和控制目的由卡所分析和使用的数据。

——工作的EF——那些EF预期用于不由卡所解释的数据,即,仅仅由外界待使用的数据。

上图:

(2)APDU报文组成

APDU由下列内容组成:

——必备的4字节首标(CLA  INS P1  P2);

——有条件的可变长度主体。

(首标) [CLA INS P1 P2]    [Lc字段][数据字段][Le字段] (主体)

INS代码:

值    命令名称 
‘0E’ ERASE BINARY 
‘20’ VERIFY 
‘70’ MANAGE CHANNEL 
‘82’ EXTERNAL AUTHENTICATE 
‘84’ GET CHALLENGE 
‘88’ INTERNAL AUTHENTICATE 
‘A4’ SELECT FILE 
‘BO’ READ BINARY
‘CO’ GET RESPONSE 
‘C2’ ENVELOPE
‘CA’ GET DATA 
‘DO’ WRITE BINARY 
‘D2’ WRITE RECORD 
‘D6’ UPDATE BINARY 
‘DA’ PUT DATA 
‘DC’ UPDATE RECORD 
‘E2’ APPEND RECORD

如有不妥之处欢迎指正。

转载请注明出处:http://www.cnblogs.com/xinwang/p/4283353.html

最新文章

  1. [Git] 还原Git上commit,但是没有push代码
  2. iOS--九宫格奥秘(UIView)(arc4random)
  3. ajax小技巧,防止多次点击发送多个请求
  4. FastDFS配置文件(tracker.conf)
  5. Configure xterm Fonts and Colors for Your Eyeball
  6. db2数据库Date相关函数
  7. -_-#【响应式】matchMedia
  8. Android学习之Drawable(一)
  9. Windown安装Mysql安装图解
  10. atittit.表单验证性质的原则和实施,以及选择和定义自己的兼容easyui dsl窗体身份验证规则
  11. python_如何统计序列中元素
  12. 使用线程操作刷新Winform界面
  13. 潭州课堂25班:Ph201805201 django 项目 第二十二课 文章主页 新闻列表页面滚动加载,轮播图后台实现 (课堂笔记)
  14. NOIP2002-2017提高组题解
  15. js高级-变量内存分析
  16. Python datetime.md
  17. 《数据结构与算法图解》 分享 pdf下载
  18. java 框架 面试 2
  19. forEach、for+i、map的用法及区别
  20. Unity本地数据存储---Sqlite和JSON

热门文章

  1. html.day02
  2. 编译安装php时提示Cannot find MySQL header files的解决方法
  3. RAC检查各资源
  4. [转] 详细整理:UITableView优化技巧
  5. ubuntu下apache与php配置
  6. SpringMVC简单搭建与入门
  7. 【USACO 2.1.3】三值的排序
  8. 如何在C#添加鼠标右键菜单
  9. .ctor,.cctor 以及 对象的构造过程
  10. oracle触发器应用