读应用数据的目的是为了从卡片中获取后续交易需要的数据。例如,在脱机数据认证时,需要的认证数据,等。步骤:根据应用初始化时,由GPO命令返回的卡片数据中的AFL,来读取卡片数据。
一. AFL:Application File Locator
二. 所用到的命令为 Read Record
终端发送的命令格式为: Record number:记录号
卡片回复的数据格式为:
三. 例子
假设由上一步从卡片中得到的数据的AFL为: 08 01 01 00 10 01 02 01
1.首先分析AFL:
由上面的数据可以知道有两个AFL entry,分别是 08 01 01 00 和 10 01 02 01
第一条: 08 01 01 00
第一个字节08:可以知道SFI 为01; 第二个字节为01,表示开始读记录号为01; 第三个字节表示最后读的记录号为01,所以SFI 为01时,只读一条记录,记录号为 01; 第四个字节为 00:表示SFI为01时,没有需要参与到脱机数据认证的数据。
第二条: 10 01 02 01
第一个字节10:SFI为02; 第二个字节为01,第三个字节为02,可知SFI为02时,需要读两条记录 01 和02; 第四个字节为01:表示参与到脱机数据认证的有1条记录,就是SFI为02,记录号为01。
2. 根据AFL发送读记录命令
发送第1条命令:SFI为01,记录号为01
T : 00 B2 01 0C 00
C : 70 25 9F 61 01 20 9F 62 01 00 5F 20 1A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 90 00
分析卡片返回数据:
70 25 9F 61 01 20 9F 62 01 00 5F 20 1A 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 90 00
90 00:表示卡片返回数据成功。
第2条命令:SFI为02,记录号为01
终端发送的第二条读记录命令为:00 B2 01 14 00
第3条命令:SFI为02,记录号为02
终端发送的第二条读记录命令为:00 B2 02 14 00
备注:关于这个例子中的tag代表什么意思,可以参考emv book3中的Annex A部分。emv规范的下载,见我前面的笔记:EMV规范(一)——背景介绍