一种读取智能卡中的记录的方法和装置的制造方法

文档序号:9304781阅读:351来源:国知局
一种读取智能卡中的记录的方法和装置的制造方法
【技术领域】
[0001]本发明涉及通信领域,尤其涉及一种读取智能卡中的记录的方法和装置。
【背景技术】
[0002]在终端与智能卡通信过程中,终端需要读取智能卡中的记录,以便进行脱机数据认证、持卡人验证、终端风险管理、终端行为分析和卡片行为分析等过程,现有的读取智能卡中的记录的方法耗时长,在终端中占用较多的空间。

【发明内容】

[0003]本发明的目的是为了克服现有技术的不足,提供一种读取智能卡中的记录的方法和装置,节省读取智能卡中的记录的时间和终端中的空间。
[0004]本发明提供的一种读取智能卡中的记录的方法,包括:
[0005]步骤S1:终端从智能卡中获取应用文件定位符;
[0006]步骤S2:所述终端从所述应用文件定位符的起始位置开始,获取第一预设长度的数据作为当前文件数据;
[0007]步骤S3:所述终端将当前文件数据中的起始记录号作为当前记录号;
[0008]步骤S4:所述终端根据当前记录号和根据当前文件数据得到的文件标识,生成读记录指令,向所述智能卡发送所述读记录指令,接收所述智能卡返回的响应数据;
[0009]步骤S5:所述终端将所述响应数据中的当前记录存储至终端存储区;
[0010]步骤S6:所述终端根据当前记录号和当前文件数据中的最终记录号判断当前记录是否为最后一条记录,如果是,则执行步骤S7,否则更新当前记录号,返回步骤S4 ;
[0011]步骤S7:所述终端判断所述应用文件定位符中是否存在位于当前文件数据之后的第一预设长度的数据,如果是,则将所述位于当前文件数据之后的第一预设长度的数据作为更新后的当前文件数据,并返回步骤S3,否则结束流程。
[0012]本发明提供一种读取智能卡中的记录的装置,所述装置包括:第一获取模块、第二获取模块、第三获取模块、生成模块、发送模块、接收模块、存储模块、第一判断模块和第二判断模块;
[0013]所述第一获取模块,用于从智能卡中获取应用文件定位符;
[0014]所述第二获取模块,用于从所述第一获取模块获取到的所述应用文件定位符的起始位置开始,获取第一预设长度的数据作为当前文件数据;
[0015]所述第三获取模块,用于将所述第二获取模块获取到的当前文件数据中的起始记录号作为当前记录号;
[0016]所述生成模块,用于根据第三获取模块获取到的所述当前记录号和根据所述第二获取模块获取到的当前文件数据得到的文件标识,生成读记录指令;
[0017]所述发送模块,用于向所述智能卡发送所述生成模块生成的所述读记录指令;
[0018]所述接收模块,用于接收所述智能卡返回的响应数据;
[0019]所述存储模块,用于将所述接收模块接收到的所述响应数据中的当前记录存储至终?而存储区;
[0020]所述第一判断模块,用于根据当前记录号和当前文件数据中的最终记录号判断当前记录是否为最后一条记录,如果是,则触发所述第二判断模块进行工作,否则更新当前记录号,触发所述生成模块进行工作;
[0021]所述第二判断模块,用于在所述第一判断模块判断当前记录为最后一条记录时,判断所述应用文件定位符中是否存在位于当前文件数据之后的第一预设长度的数据,如果是,则将所述位于当前文件数据之后的第一预设长度的数据作为更新后的当前文件数据,并触发所述第三获取模块进行工作。
[0022]本发明与现有技术相比,具有以下优点:
[0023]本发明提供的一种读取智能卡中的记录的方法和装置,可以节省读取智能卡中的记录的时间和终端中的空间。
【附图说明】
[0024]图1是本发明实施例1提供的一种读取智能卡中的记录的方法的流程图;
[0025]图2是本发明实施例2提供的一种读取智能卡中的记录的方法的流程图;
[0026]图3是本发明实施例3提供的一种读取智能卡中的记录的方法的流程图;
[0027]图4是本发明实施例4提供的一种读取智能卡中的记录的装置的模块图。
【具体实施方式】
[0028]下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
[0029]实施例1
[0030]本发明的实施例1提供了一种读取智能卡中的记录的方法,如图1所示,包括:
[0031]步骤101:终端从智能卡中获取应用文件定位符;
[0032]具体地,终端通过向智能卡发送取处理选项指令,接收智能卡返回的数据并从中获取应用文件定位符;
[0033]具体地,终端对智能卡返回的数据中第I个字节的数据进行判断,若为第一预设数据,则终端获取下一个字节的数据作为智能卡返回的数据长度,根据智能卡返回的数据长度计算得到应用文件定位符的长度,终端从智能卡返回的数据中第5个字节开始,根据应用文件定位符的长度获取数据,将获取到的数据作为应用文件定位符;若智能卡返回的数据中第I个字节的数据为第二预设数据,则在智能卡返回的数据中查找应用文件定位符标签,若不能查找到则确定读取失败,结束流程,若找到应用文件定位符标签,则获取应用文件定位符标签的下一个字节数据作为应用文件定位符的长度,根据应用文件定位符的长度继续获取数据作为应用文件定位符;若智能卡返回的数据中第I个字节的数据为其他值则确定读取失败,结束流程;优选地,第一预设数据为0x80,第二预设数据为0x77,应用文件定位符标签为0x94 ;
[0034]例如,终端接收到的智能卡返回的数据为80 OE 5C 00 08 01 01 00 10 01 0301 18 01 03 00 90 00 ;终端判断出智能卡返回的数据中第I个字节的数据为第一预设数据0x80,则获取下一个字节的数据作为智能卡返回的数据长度,即智能卡返回的数据长度为ΟχΟΕ,将智能卡返回的数据长度减2得到应用文件定位符的长度,即应用文件定位符的长度为OxOC,终端从智能卡返回的数据中第5个字节开始,获取OxOC个字节数据作为应用文件定位符,即应用文件定位符为08 01 01 00 10 01 03 01 18 01 03 00;
[0035]步骤102:终端判断应用文件定位符的长度是否正确,如果是,则执行步骤103,否则确定读取失败,结束流程;
[0036]具体地,终端将应用文件定位符的长度除以4取余数,判断余数是否为0,如果是,则确定应用文件定位符的长度正确,否则确定应用文件定位符的长度不正确;
[0037]步骤103:终端从应用文件定位符的起始位置开始,获取第一预设长度的数据作为当前文件数据;
[0038]具体地,第一预设长度为4个字节;
[0039]例如,应用文件定位符为08 01 01 00 10 01 03 01 18 01 03 00,获取应用文件定位符的前4个字节的数据作为当前文件数据,即当前文件数据为08 01 01 00;
[0040]步骤104:终端在当前文件数据中获取脱机认证记录个数作为当前认证记录个数,在当前文件数据中获取起始记录号作为当前记录号;
[0041]具体地,终端获取当前文件数据的第2个字节的数据作为起始记录号,获取当前文件数据中的第4个字节的数据作为当前认证记录个数;
[0042]例如,当前认证记录个数为0,当前记录号为I ;
[0043]本实施例中,该步骤之前还包括:终端获取当前文件数据中的起始记录号和脱机认证记录个数,判断起始记录号和脱机认证记录个数是否正确,如果是,则执行步骤104,否则确定读取失败,结束流程;
[0044]具体地,终端获取当前文件数据的第2个字节的数据作为起始记录号,获取当前文件数据的第3个字节的数据作为最终记录号,获取当前文件数据的第4个字节的数据作为脱机认证记录个数,终端判断是否起始记录号不为O并且脱机认证记录个数是否为在预设范围内,如果是,则确定起始记录号和脱机认证记录个数正确,否则确定起始记录号和脱机认证记录个数不正确;具体地,预设范围的最小值为0,最大值为文件中的记录总数,即最大值为最终记录号减去起始记录号再加I ;
[0045]例如,终端获取到的当前文件数据中的起始记录号为0x01,获取到的当前文件数据中的最终记录号为0x01,当前文件数据中的脱机认证记录个数为0,则确定起始记录号和脱机认证记录个数正确;
[0046]步骤105:终端根据当前记录号和根据当前文件数据得到的文件标识,生成读记录指令,向智能卡发送生成的读记录指令,等待接收智能卡返回的响应数据;
[0047]具体地,终端获取当前文件数据的第I个字节的数据,将获取到的数据右移3位,得到文件标识;终端将当前记录号作为读记录指令的第一参数,将文件标识左移3位后再加0x04,得到的结果作为读记录指令的第二参数,根据读记录指令类别、读记录指令码、第一参数和第二参数生成读记录指令;
[0048]例如,终端获取当前文件数据的第I个字节的数据为0x08,将获取到的数据0x08右移3位,得到文件标识为二进制数00000001,终端将文件标识左移3位后再加0x04,得到第二参数OxOC ;则读记录指令类别为0x00,读记录指令码为0xB2,第一参数为0x01、第二参数为OxOC,即读记录指令为00 B2 01 OC 00 ;智能卡返回的响应数据为:70 3E 5F 20 OF
4655 4C 4C 20 46 55 4E 43 54 49 4F 4E 41 4C 57 11 47 61 73 90 01 01 00 10 D201 22 01 01 23 45 67 89 9F IF 16 30 31 30 32 30 33 30 34 30 35 30 36 30 37 3038 30 39 30 41 30 42 90 00 ;
[0049]步骤106:终端在响应数据中获取响应码,判断获取到的响应码是否正确,如果是,则执行步骤107,否则确定读取失败,结束流程;
[0050]具体地,终端在响应数据中获取最后2个字节的数据作为响应码,判断响应码是否为第三预设数据,如果是,则确定响应码正确,否则确定响应码不正确;例如,第三预设数据为 0x9000 ;
[0051]步骤107:终端判断响应数据的格式是否正确,如果是,则执行步骤108,否则确定读取失败,结束流程;
[0052]具体地,该步骤包括:
[0053]步骤107-1:终端判断当前认证记录个数是否为0,如果是,则执行步骤107-3,否则执行步骤107-2 ;
[0054]步骤107-2:终端判断响应数据的第I个字节是否为模板标签,如果是,则执行步骤107-3,否则确定响应数据的格式不正确;
[0055]例如,模板标签为0x70 ;
[0056]步骤107-3:终端判断响应数据的当前记录中的各数据元是否满足TLV格式,如果是,则确定响应数据的格式正确,否则确定响应数据的格式不正确;
[0057]例如,终端判断响应数据的当前记录中的各数据元是否满足TLV格式,包括:
[0058]步骤AO:终端获取响应数据的第2个字节的数据,判断获取到的数据的值,若该数据小于0x80,则将获取到的数据作为响应数据长度,获取响应数据长度的下一个字节的数据作为当前数据元标签,执行步骤Al ;若该数据为0x81,则终端获取响应数据的第3个字节的数据作为响应数据长度,获取响应数据长度的下一个字节的数据作为当前数据元标签,执行步骤Al ;若该数据为0x82,则终端获取响应数据的第3个字节和第4个字节的数据作为响应数据长度,获取响应数据长度的下一个字节的数据作为当前数据元标签,执行步骤Al ;若该数据为其他值,则响应数据格式错误,结束;
[0059]步骤Al:终端判断当前数据元标签是否为第五预设数据,如果是
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1