刚到公司老大便发我一份文档《智能卡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

EMV/PBOC 解析(一) 卡片文件结构的更多相关文章

  1. EMV/PBOC 解析(二) 卡片数据读取

    上一篇简单的了解了IC智能卡的文件结构和APDU报文,这篇我们直接来读取卡内的数据.下面我们主要参照<中国金融集成电路(IC)卡规范>. 好了废话不多说,下面贴指令: (1)卡片接收一个来 ...

  2. EMV/PBOC解析(三) TLV格式解析(C#)

    1.什么是TLV格式? TLV即Tag-Length-Value,常在IC卡与POS终端设备中通过这样的一个应用通信协议进行数据交换. 金融系统中的TLV是BER-TLV编码的一个特例编码规范,而BE ...

  3. PBOC中文件结构,文件类型解析

    1.明确两个规范,a. ISO7816   b.EMV规范/PBOC规范,二者的区别,7816是ISO制定的,是国际规范,而EMV规范是卡组织制定的,是遵循ISO7816规范的,PBOC是抄袭EMV规 ...

  4. Xamarin XAML语言教程XAML文件结构与解析XAML

    Xamarin XAML语言教程XAML文件结构与解析XAML XAML文件结构 在上文中,我们创建XAML文件后,会看到类似图1.16所示的结构 图1.16  结构 其中,.xaml文件和.xaml ...

  5. PBOC

    http://blog.sina.com.cn/s/blog_64cc82620100rcgu.html 最近在做一个基于PBOC电子现金卡的终端应用, 项目还没有完成, 但电子现金部分的处理模块已完 ...

  6. EMV技术学习和研究(转)

    刚开始学习EMV&PBOC,磕磕碰碰,感谢xuture的<EMV技术学习和研究>给了很大帮助,让我少走了很多弯路,也感谢广俊.surge.艾零.小SO.Spinach.龙行天下的帮 ...

  7. 03-IOSCore - XML及解析、Plist

    一.XML 可扩展标记语言 是什么?是一段有规范的字符串, 用在哪?用在任何地方 语法: * 结点Node <结点名 属性名="属性值"> 结点内容 </结点名& ...

  8. BER-TLV数据结构【转】

    转自:https://www.cnblogs.com/SCPlatform/p/5076935.html 为了便于后文的引用说明,先列出一段TLV结构的数据: [6F] 4D │ ├─[84] 07 ...

  9. BER-TLV数据结构

    本文是自身在研究学习过程中碰到的问题,整理而成. 为了便于后文的引用说明,先列出一段TLV结构的数据: [6F] 4D │ ├─[] A0000003330101 │ ├─[A5] │ │ ├─[] ...

随机推荐

  1. 第10章 PHP异常处理

    1. 抛出一个异常 从PHP5开始,PHP支持异常处理,异常处理是面向对象一个重要特性,PHP代码中的异常通过throw抛出,异常抛出之后,后面的代码将不会再被执行. 既然抛出异常会中断程序执行,那么 ...

  2. C#串口控制

    串行口是计算机的标准接口,现在的PC机(个人电脑)一般至少有两个串行口COM1和COM2.串行口应用广泛,在数据通信.计算机网络以及分布式工业控制系统中,经常采用串行通信来交换数据和信息.本节通过几个 ...

  3. uva 11673 Garbage Remembering Exam (概率)

    题目链接: http://vjudge.net/problem/viewProblem.action?id=42000 该过程为随即过程,因此总期望值等于个单词对应的期望值,即它们wasted的概率 ...

  4. 巧用C#做中间语言 实现Java调用.net DLL

    本文将详细为大家介绍一个java调用.net DLL的方法,以实现特殊的客户的特殊要求:“在Java项目中必须使用其提供的用.net写的DLL加密机制!” 环境与工具: ◆.net framework ...

  5. 解决Mac上Android开发时adb连接不到手机问题

    今天在Mac OS上进行Android开发的时候,打开eclipse连接不到手机MX4问题 1. 插入手机打开 Terminal,输入 system_profiler  SPUSBDataType 2 ...

  6. jQuery toggle() 方法与实例以及代替方法。

    看<jQeury 权威指南>时看到这个toggle()方法.因为之前在慕课网学习接触过.发现两者讲的有细微的不同 以隐藏/显示目标元素效果为例,慕课网是这样讲解的 $("#cli ...

  7. 安卓webview下使用zepto的swipe失效

    安卓webview下使用zepto的swipe遇到的坑 众所周知,安卓手机上touch事件一直有各种各样莫名其妙的问题. 比如,我想要用swipeLeft/swipeRight监听向左向右滑动事件,如 ...

  8. extjs中combobox默认显示第一个值

    在进入页面时往往用户希望页面能够显示默认的内容,但是页面中会存在一些选项通过用户选择之后才会加载相应的内容.在这篇文章里面介绍了如何去设置页面中默认的内容,如combobox默认显示第一个值. 页面: ...

  9. js join()函数将数组转换成字符串

    join() 方法用于把数组中的所有元素放入一个字符串.作用是将数组转换为字符串,其作用和toString()相同. 元素是通过指定的分隔符进行分隔的. 例如: var asp=['H','ell', ...

  10. python+flask+mongodb+whoosh实现自己的搜索引擎(一):目录

    python+flask+jieba+mongodb+whoosh实现自己的搜索引擎 一.目录 二.基于python的爬虫 三.网页去燥,URL去重 四.基于mongodb的数据存储 五.基于whoo ...