今天在工作中碰到一些问题,就找到了这篇文章,个人感觉很好,保存下来,以供随时学习。

转载地址:EMV技术学习和研究

作者:小旭

目的:

应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是由终端和卡片共同支持的。终端的AID列表是通过AID下载交易从服务端获取,卡片的AID是在做卡片个人化时写入的。

从终端角度来讲,选择方式就是目录选择法和AID列表法。

特别说明(参考了小马哥的分析和解释):

aid选择涉及到MF,DDF,ADF,EF,AEF几个概念,先描述一下这几个文件的概念。

MF、DF、EF三个概念是ISO7816的规范,做卡片的一般会比较熟悉,做终端的只要了解就可以了。

MF其实就是根目录,类似我们的C盘,D盘这些,DF就是目录,比如我们PC的program目录一样,EF就是DF下面的文件,比如PC下面的某个目录下的文件。

ADF、DDF、AEF就是PBOC规范里面的名词了,ADF和DDF其实就是DF的一个映射,AEF就是EF的映射,我们不能直接操作DF和EF,只能操作ADF和DDF以及AEF,就相当于内存管理里面物理地址和虚拟地址一样,程序不能直接使用物理地址,只能使用虚拟地址,而内存管理的单元回去实现虚拟地址到物理地址的映射。

这里还有一个区别点,既然ADF和DDF都是DF的映射,那他们两个有啥区别呢?

DDF还是一个目录,这个目录下面可能有ADF,也可能还是有DDF的。

ADF也是一个目录,但是这个目录已经是aid的目录了,这个目录的名称就是AID了。

再根据ADF名称去选择ADF,ADF下面都是AEF,也就是这个AID多对应的有用数据文件,终端在GPO时候根据返回的AFL,再去读取对应的文件。

目录选择法流程:

目录选择法支持借贷记和电子现金,同时也支持QPBOC,所以分两种情况说明。

一、借贷记和电子现金

1.终端要选择PSE,这个叫做支付环境系统,也是一个DDF。

特别说明,PB0C3.0上已经取消了DDF的概念,但是并不是取消了PSE和PPSE,只是取消了DDF的概念,也就是说取消了DDF下面还存在DDF的情况。

pboc2.0在读取记录的时候有可能读取到的是DDF,这个时候需要通过返回的SFI再去选择DDF后再去读记录,循环执行,直到读取到ADF。

主要是根据tag值为9D还是4F来判断是DFF还是ADF。

pboc3.0取消DDF后,就不用再考虑这个步骤了。

有感兴趣的可以去下面的网址,http://bbs.yktworld.com/dispbbs.asp?boardid=27&Id=4070

选择完PSE之后,PSE目录会返回SFI(tag 88),然后终端根据SFI,再执行READ RECORD命令读取记录,读记录根据SFI循环读取,直到卡片返回6A83为止,这个时候终端已经获取到卡片支持的AID(tag 4F)。每读一次记录,如果返回9000,都会获得一个卡片支持的AID。

读记录以后采用终端的aid和卡片aid比较,如果相同,则这几个应用被选中。

读记录除了返回AID外,还有几个重要参数,比如应用优先级指示器(这个比较重要),应用标签(用于在持卡人选择应用时做显示)等,PBOC文档有比较详细的解释和说明了。

当卡片和终端有多个应用支持时,需要根据应用优先级指示器的bit8来判断是否需要提示持卡人选择应用。

如果在未读到记录之前或者读记录后检查数据非法等情况,均认为是目录选择法失败,这时候就需要改用AID选择法。

上述描述比较抽象,拿一个实例和大家分享一下:

[html] view plaincopy
  1. Send:20
  2. 00 A4 04 00 0E 31 50 41 59 2E 53 59 53 2E 44 44
  3. 46 30 31 00
  4. Rec:43
  5. 6F 26 84 0E 31 50 41 59 2E 53 59 53 2E 44 44
  6. 46 30 31 A5 14 88 01 01 5F 2D 02 7A 68 9F 11 01
  7. 01 BF 0C 05 9F 4D 02 0B 0A 90 00
  8. Send:5
  9. 00 B2 01 0C 00
  10. Rec:45
  11. 70 28 61 26 4F 08 A0 00 00 03 33 01 01 01 50
  12. 0A 50 42 4F 43 20 44 45 42 49 54 9F 12 0A 50 42
  13. 4F 43 20 44 45 42 49 54 87 01 01 90 00
[html] view plaincopy
  1. Send:5
  2. 00 B2 02 0C 00
  3. Rec:3
  4. 6A 83

二、Qpboc(后续简称Q)

1.终端要选择PPSE,这个叫做支付环境系统,也是一个DDF。

2.Q在选择完PPSE之后已经可以获取到AID(可能是多个)、应用优先级、应用指示器,Q不支持持卡人选择应用,所以如果有多个AID的时候,需要根据应用优先级选择优先级最高的AID,再根据AID选择ADF,就可以获取到PDOL(关键数据)、发行卡代码等数据。

Q和借贷记的区别(仅讨论应用选择部分):

1、Q不支持持卡人选择应用。

2、Q不支持AID列表选择法。

3、Q的流程简化了很多。

借贷记需要根据选择PSE返回的SFI读记录获取AID,再根据AID去选择ADF,再去读数据;Q在选择PPSE之后就可以获取到AID,直接选择ADF了。

再拿一个实例来看一下

[html] view plaincopy
  1. send:20
  2. 00 A4 04 00 0E 32 50 41 59 2E 53 59 53 2E 44 44
  3. 46 30 31 00
  4. rec:52
  5. 6F 30 84 0E 32 50 41 59 2E 53 59 53 2E 44 44 46
  6. 30 31 A5 1E BF 0C 1B 61 19 4F 08 A0 00 00 03 33
  7. 01 01 01 50 0A 50 42 4F 43 20 44 45 42 49 54 87
  8. 01 01 90 00
  9. send:14
  10. 00 A4 04 00 08 A0 00 00 03 33 01 01 01 00
  11. rec:88
  12. 6F 54 84 08 A0 00 00 03 33 01 01 01 A5 48 50 0A
  13. 50 42 4F 43 20 44 45 42 49 54 87 01 01 9F 38 18
  14. 9F 66 04 9F 02 06 9F 03 06 9F 1A 02 95 05 5F 2A
  15. 02 9A 03 9C 01 9F 37 04 5F 2D 02 7A 68 9F 11 01
  16. 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54 BF 0C
  17. 05 9F 4D 02 0B 0A 90 00

AID选择法流程

AID选择法,就是终端将自己所支持的全部AID通过SELECT命令发送给卡片,逐一尝试,看哪条AID是卡片所支持的。

选完AID后续的处理还是目录选择法一样,根据支持AID的情况判断是否需要做持卡人选择应用。

实例一下就看明白了:

[html] view plaincopy
  1. send:12
  2. 00 A4 04 00 06 A0 00 00 00 25 01 00
  3. rec:3
  4. 6A 82
  5. send:13
  6. 00 A4 04 00 07 A0 00 00 00 03 10 10 00
  7. rec:3
  8. 6A 82
  9. send:13
  10. 00 A4 04 00 07 A0 00 00 00 03 20 10 00
  11. rec:3
  12. 6A 82
  13. send:13
  14. 00 A4 04 00 07 A0 00 00 00 04 10 10 00
  15. rec:3
  16. 6A 82
  17. send:13
  18. 00 A4 04 00 07 A0 00 00 00 65 10 10 00
  19. rec:3
  20. 6A 82
  21. send:14
  22. 00 A4 04 00 08 A0 00 00 03 33 01 01 06 00
  23. rec:3
  24. 6A 82
  25. send:14
  26. 00 A4 04 00 08 A0 00 00 03 33 01 01 01 00
  27. rec:74
  28. 6F 45 84 08 A0 00 00 03 33 01 01 01 A5 39 50
  29. 0A 50 42 4F 43 20 44 45 42 49 54 87 01 01 9F 38
  30. 09 9F 7A 01 9F 02 06 5F 2A 02 5F 2D 02 7A 68 9F
  31. 11 01 01 9F 12 0A 50 42 4F 43 20 44 45 42 49 54
  32. BF 0C 05 9F 4D 02 0B 0A 90 00
  33. send:14
  34. 00 A4 04 00 08 A0 00 00 03 33 01 01 02 00
  35. rec:3
  36. 6A 82

应用选择后,终端已经获取到PDOL,PDOL将会作为后续进行GPO的重要数据。

EMV技术学习和研究相关推荐

  1. EMV技术学习和研究(一)开篇

    在这个行业也3年多了,一直想写写关于EMV和PBOC的内容,但是总觉得自己懂得还不够,对EMV和PBOC的理解还不够深入. 但是后来想想,如果还不开始自己写一点东西的话,可能这个事情也就永远的搁浅了, ...

  2. EMV技术学习和研究(五)脱机数据认证之DDA

    转载请注明出处 作者:小旭 有了前面对SDA的熟悉,接下来再研究DDA就会感觉比较轻松一点了. 用于动态数据认证的数据和SDA部分所描述的一样,也是基于SFI的来组织的. 特别说明一下:之前有一个地方 ...

  3. EMV技术学习和研究(十一)QPBOC

    转载请注明出处 作者:小旭 Q在选择完应用之后,是有一步交易预处理,交易预处理是对交易限额的处理,在交易开始之前首先对交易金额做出计算和判断.有点类似于借贷记交易中终端风险管理中所完成的步骤.关于交易 ...

  4. EMV技术学习和研究(七)持卡人验证

    转载请注明出处 作者:小旭 持卡人认证部分,EMV和PBOC是有区别的,EMV有脱机加密PIN认证,PBOC没有:PBOC有持卡人身份证件验证,但是EMV没有. 持卡人验证主要基于两个数据要素,AIP ...

  5. EMV技术学习和研究(九)终端行为分析

    转载请注明出处 作者:小旭 这一块的内容,我觉得文档上讲的比较清晰,而且举例也很好,所以大部分都是拷贝文档的内容过来,一边看一边分析文档的含义. 这一部分用到2类比较重要的数据,分别是 发卡行行为代码 ...

  6. EMV技术学习和研究(三)应用初始化读应用数据

    转载请注明出处 作者:小旭 借贷记和Qpboc在应用初始化和读应用数据方面的流程还是比较相似. 先看借贷记和电子现金的处理流程 应用选择完成后,终端获取到了PDOL数据(特别说明:这个不是必须的,卡片 ...

  7. EMV技术学习和研究(十二)交易限额

    转载请注明出处 作者:小旭 EMV参数里面有几个限额,但是感觉这几个限额都比较容易混淆和模糊,下面一个一个的来讨论一下. 终端最低限额(9F1B).终端电子现金交易限额(9F7B).非解最低限额(DF ...

  8. EMV技术学习和研究(二)应用选择

    转载请注明出处 作者:小旭 目的: 应用选择主要目的就是在卡片插入终端的时候,由终端来选择哪些应用是由终端和卡片共同支持的.终端的AID列表是通过AID下载交易从服务端获取,卡片的AID是在做卡片个人 ...

  9. EMV规范学习与研究(三)——应用初始化

    应用初始化目的: ①通知卡片新交易开始: ②将交易所需的数据发送给卡片: ③从卡片上返回AIP和AFL: ④决定交易是否被允许执行: 应用初始化步骤:(GPO命令的格式) 设置TVR和TSI中所有位为 ...

最新文章

  1. 软件测试概述--基础篇
  2. 云计算技术 — 云计算的未来
  3. 面试题整理 8 字符串排序扩展题
  4. Flask实战2问答平台-问答详情完成
  5. tomcat启动时,报java.io.EOFException
  6. 开课吧的python的证书_Python在生活中的几个实用场景,简直太厉害了
  7. React之props批量传递
  8. 图论 —— 图的连通性
  9. 实现算法2.11、2.12的程序
  10. android adb音频采集,android adb
  11. .Net MVC中SelectList绑定默认值失效的解决办法
  12. Spring Boot
  13. dbf转成excel_dbf转excel工具(DbfToExcel) v1.2 免费版
  14. 金蝶k3单据编码规则_金蝶k3套打格式设置图文教程(凭证与供应链单据)
  15. excel计算机快捷键大全,Excel使用教程 Excel表格快捷键与功能键大全
  16. WEB版 音乐播放器
  17. 蓝桥杯 算法提高 ADV-143 扶老奶奶过街 逻辑推理
  18. 螃蟹辞职 大数据冲击网络社交 魔兽世界如何前进
  19. python encoding是什么_python中encoding什么意思
  20. 宽带和网线有什么区别?

热门文章

  1. 实体命名识别(NER)任务中加词典
  2. Matlab凯撒密码加密解密
  3. 简述二进制码、十进制码、BCD码、十六进制码转换的算法
  4. 全球与中国固定平台起重机市场发展重点及产销需求预测报告2022-2028年版
  5. day16、3 - ICMP协议
  6. 2011不可不微博,教你做微博淘宝客
  7. 反常积分p幂判别法p的选取
  8. 同步器AQS中的同步队列与等待队列
  9. Java-受检异常与非受检异常
  10. redis安装-启动