CN102591699A - 一种转换命令模式的方法及装置 - Google Patents

一种转换命令模式的方法及装置 Download PDF

Info

Publication number
CN102591699A
CN102591699A CN2011104493076A CN201110449307A CN102591699A CN 102591699 A CN102591699 A CN 102591699A CN 2011104493076 A CN2011104493076 A CN 2011104493076A CN 201110449307 A CN201110449307 A CN 201110449307A CN 102591699 A CN102591699 A CN 102591699A
Authority
CN
China
Prior art keywords
data
smart card
virtual machine
generates
card virtual
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN2011104493076A
Other languages
English (en)
Other versions
CN102591699B (zh
Inventor
陆舟
于华章
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Feitian Technologies Co Ltd
Beijing Feitian Technologies Co Ltd
Original Assignee
Feitian Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Feitian Technologies Co Ltd filed Critical Feitian Technologies Co Ltd
Priority to CN201110449307.6A priority Critical patent/CN102591699B/zh
Publication of CN102591699A publication Critical patent/CN102591699A/zh
Application granted granted Critical
Publication of CN102591699B publication Critical patent/CN102591699B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明公开一种转换命令模式的方法及装置,该方法包括:对接收到的数据按照空格进行拆分;当拆分得到的第一个数据段的首字符符合第一预定义字符时,获取文件名为删除首字符的第一个数据段的文件内容,并将获取的非空文件内容发送给脚本解析器进行解析;当第一个数据段与第二预定义字符串相同且在预定义命令名的集合中有与第一个数据段相同的命令名时,如第一个数据段对应的命令为智能卡不可执行的命令,则将所述接收到的数据中除所述第一个数据段的参数值存储在缓冲器中,否则按照所述第一数据段对应的智能卡命令进行下一步操作。本发明提供的方法及装置在很大程度上缩短了调试智能卡中应用的时间,从而提高了测试智能卡的效率。

Description

一种转换命令模式的方法及装置
技术领域
本发明涉及智能卡领域,特别涉及一种在JAVA环境下转换命令模式的方法及装置。
背景技术
现有技术中,对智能卡中的应用进行调试和测试时,一般是通过用户将数据一条条地输入到智能卡虚拟机中,然后智能卡虚拟机对数据进行处理,最终输出处理结果,从而达到调试和测试智能卡中应用的目的。实际中,在用户需要输入数据之前,必须将数据组织为智能卡可执行的命令,而在实际的调试和测试过程中,这样发送数据前的组织过程和智能卡执行单条命令的过程是极其耗时和繁琐的。
智能卡可执行的命令包含命令头和命令体两部分,其中命令头部分为必要部分,包括:指令类别字节(CLA)、指令代码字节(INS)、指令参数字节(P1、P2);命令体部分包括:长度字段(Lc)、数据字段(Data)、长度字段(Le),长度字段(Lc)的值由数据字段的长度确定,数据字段为发送的字节串,长度字段(Le)为APDU的响应命令中数据字段的期望的字节最大数;智能卡可执行的命令格式具体为:CLA INS P1 P2 Lc Data Le。
发明内容
鉴于现有技术的不足,为了有效的解决现有技术的不足,本发明提出了一种转换命令模式的方法及装置。
本发明提供一种转换命令模式的方法,包括:
步骤A:装置对接收到的数据按照空格进行拆分;
步骤B:所述装置判断拆分得到的第一个数据段的首字符是否符合第一预定义字符,是则执行步骤C,否则执行步骤E;
步骤C:所述装置删除所述第一个数据段的首字符,获取文件名为所述删除首字符的第一个数据段的文件内容,并将所述获取的非空文件内容发送给脚本解析器进行解析;
步骤D:所述装置接收所述脚本解析器返回的解析结果,返回步骤A;
步骤E:所述装置判断所述第一个数据段是否与第二预定义字符串相同,是则执行步骤F,否则结束;
步骤F:所述装置判断在预定义命令名的集合中是否有与所述第一个数据段相同的命令名,是则执行步骤G,否则结束;
步骤G:所述装置判断所述第一个数据段对应的命令是否为智能卡不可执行的命令,是则将所述接收到的数据中除所述第一个数据段之外的参数值存储在缓冲器中,否则按照所述第一数据段对应的智能卡命令进行下一步操作。
其中,所述步骤C具体包括:
步骤C1:所述装置删除所述第一个数据段的首字符;
步骤C2:所述装置从应用平台的目录中获取文件名为所述删除首字符的第一个数据段的文件内容;
步骤C3:所述装置判断所述文件内容是否为空,是则结束,否则将所述文件内容发送给脚本解析器进行处理。
其中,所述步骤D具体包括:
步骤D1:所述装置接收所述脚本解析器返回的解析结果,判断所述解析结果是否为空,是则结束,否则执行步骤D2;
步骤D2:所述装置判断所述解析结果中是否有多行数据,是则将第一行数据作为当前数据开始处理,顺序执行步骤D3,否则返回步骤A;
步骤D3:所述装置将当前数据进行拆分,得到多个数据段,顺序执行步骤B-步骤G的操作;
步骤D4:所述装置判断是否处理完所述接收到的解析结果,是则调用函数将处理结果以显示方式输出,否则将下一行数据作为当前数据,返回步骤D3。
其中,所述步骤G中所述装置判断所述第一个数据段对应的命令是否为智能卡不可执行的命令具体为:判断所述第一个数据段对应的命令中是否包含第一预设标识。
其中,所述步骤G中的按照所述第一数据段对应的智能卡命令进行下一步操作包括:
步骤S2:所述装置根据所述接收到的数据生成符合预设格式的数据,并将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6;或
步骤S3:所述装置将所述接收到的数据中除所述第一个数据段之外的其他数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6;或
步骤S4:所述装置根据指令类别字节、指令代码字节和第二参数值、第一参数值和第二随机数生成符合预设格式的数据,并将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6;或
步骤S5:所述装置根据接收到的数据生成第二数据,根据所述第二数据生成校验数据,根据所述第二数据和校验数据生成符合预设格式的数据并发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6;
步骤S6:所述装置接收所述智能卡虚拟机返回的处理结果,并调用函数在应用平台上显示所述处理结果。
其中,在所述步骤S2之前还包括:
步骤S1:所述装置检测所述第一个数据段对应的智能卡命令的类型,如是第一预定义类型,则执行步骤S2;如是第二预定义类型,则执行步骤S3;如是第三预定义类型,则执行步骤S4;如是第四预定义类型,则执行步骤S5。
其中,所述步骤S2包括:
所述装置生成第一随机数,将所述第一随机数作为数据字段值;从所述接收到的数据中获取第一参数值,根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值,根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第一随机数生成符合预设格式的数据;
所述装置判断是否已与智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
其中,所述步骤S3包括:
所述装置判断是否已与智能卡虚拟机建立连接,是则将所述接收到的数据中除所述第一个数据段的其他数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述接收到的数据中除所述第一个数据段的其他数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
其中,所述步骤S4包括:
所述装置生成所述第二随机数,将所述第二随机数作为数据字段值,根据所述接收到的数据中的参数从所述第一缓存器中获取所述第一参数值,根据所述第一个数据段对应的命令设置所述指令类别字节、所述指令代码字节和所述第二参数值,根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第二随机数生成符合预设格式的数据;
所述装置判断是否已与所述智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
其中,所述步骤S6中所述装置接收处理结果与调用函数将所述处理结果以显示方式输出之间包括:
步骤S61:所述装置接收处理结果并存储到第二缓存器中,根据第一填充数据、所述处理结果中的密钥版本号和所述智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;
步骤S62:所述装置根据所述第二随机数、第二填充数据、所述智能卡虚拟机生成的计数值和所述处理结果中的智能卡虚拟机生成的随机数,生成验证源数据;
步骤S63:所述装置使用所述安全会话密钥基本密钥对所述验证源数据进行加密,生成验证数据;
步骤S64:所述装置判断所述验证数据是否与所述处理结果中的密文信息相符,是则将所述处理结果以显示方式输出,否则结束。
其中,所述步骤S61包括:
所述装置生成所述第一填充数据;
所述装置根据所述处理结果中的密钥版本号获取常数值;
所述装置从所述第二缓存器中获取智能卡虚拟机生成的计数值,根据所述计数值、所述常数值和所述第一填充数据生成安全会话密钥基本密钥。
其中,所述步骤S62包括:
所述装置生成所述第二随机数和第二填充数据;
所述装置从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数;
所述装置根据所述第二随机数、所述第二填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成验证源数据。
其中,所述步骤S64中所述装置判断所述验证数据是否与所述处理结果中的密文信息相符,包括:
所述装置从所述第二缓存器中获取所述密文信息,判断所述验证源数据中的最后8个字节数据是否与所述密文信息相同。
其中,所述步骤S5包括:
步骤S51:所述装置从第二缓存器中获取密钥版本号和智能卡虚拟机生成的计数值,根据第三填充数据、所述密钥版本号和所述计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;
步骤S52:所述装置使用预先存储的第一基础密钥分别对所述安全会话密钥的基本密钥和所述命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;
步骤S53:所述装置从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数,根据生成的第三随机数和第四填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成第一数据;
步骤S54:所述装置使用所述安全会话密钥对所述第一数据进行加密,生成卡外密文数据;
步骤S55:所述装置根据第一个数据段对应的命令设置指令类别字节、指令代码字节和参数,根据所述卡外密文数据、所述指令类别字节、所述指令代码信字节和所述参数生成第二数据;
步骤S56:所述装置对所述第二数据进行转化处理生成新第二数据,对所述新第二数据进行填充生成第三数据;
步骤S57:所述装置使用所述命令消息识别码会话密钥对所述第三数据进行加密,生成校验数据;
步骤S58:所述装置根据所述新第二数据和所述校验数据,生成符合预设格式的数据;
步骤S59:所述装置判断是否已与智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
其中,所述步骤S51具体包括:
所述装置生成第三填充数据;从所述第二存储器中获取密钥版本号和智能卡虚拟机生成的计数值;根据所述密钥版本号获取对应的第一常数值和第二常数值;
所述装置根据所述第一常数值、所述计数值和所述第三填充数据生成安全会话密钥基本密钥,所述装置根据所述第二常数值、所述计数值和所述第三填充数据生成命令消息识别码会话密钥的基本密钥。
其中,所述S55具体包括:
所述装置将所述卡外密文数据作为数据字段值;
所述装置根据所述第一个数据段对应的命令分别设置指令类别字节、指令代码字节、第二参数值;所述装置根据接收到的数据中的参数设置第一参数值;
所述装置根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述卡外密文数据生成所述第二数据。
其中,所述S56具体包括:
所述装置将所述第二数据中的指令类别字节对应的二进制数中由低位到高位的第三位置为1,生成所述新二进制数,将所述新二进制数转化为十六进制数,将所述十六进制数代替所述第二数据中的指令类别字节生成所述新第二数据;所述装置对所述新第二数据进行填充,生成第三数据。
本发明又提供一种转换命令模式的装置,包括:
接收模块:用于接收用户输入的数据、脚本解析器返回的解析结果、虚拟机返回的处理结果;
拆分模块:用于对所述接收到的数据按照空格进行拆分,得到多个数据段;
第一判断模块:用于判断拆分得到的第一个数据段的首字符是否符合第一预定义字符;
删除模块:用于删除所述第一个数据段的首字符;
第一获取模块:用于获取文件名为所述删除首字符的第一个数据段的文件;
第二判断模块:用于判断所述文件内容是否为空;
发送模块:用于将所述非空文件内容发送给脚本解析器进行解析;
第三判断模块:用于在第一个数据段的首字符不符合第一预定义字符时,判断所述第一个数据段是否与第二预定义字符串相同;当所述第一个数据段与第二预定义字符串相同时,判断在预定义命令名的集合中是否有与所述第一个数据段相同的命令名;在预定义命令名的集合中有与所述第一个数据段相同的命令名时,判断所述第一个数据段对应的命令是否为智能卡不可执行的命令;
存入模块:用于在所述第一个数据段对应的命令为智能卡不可执行的命令时,将所述接收到的数据中的参数值存储在缓冲器中;
处理模块:用于在所述第一个数据段对应的命令为智能卡命令时进行下一步操作;
输出模块:用于调用函数将接收到的数据在应用平台上显示输出。
其中,所述装置还包括第四判断模块:用于判断接收到的所述解析结果是否为空;在所述解析结果不为空时判断所述解析结果中是否有多行数据,判断是否处理完所述接收到的解析结果。
其中,所述处理模块还包括:
检测子模块:用于在所述第一个数据段对应的命令为智能卡命令时,检测所述第一个数据段对应的智能卡命令的类型;
第一生成发送子模块:用于在所述第一个数据段对应的智能卡命令的类型是第一预定义类型时,根据所述接收到的数据生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;
第一发送子模块:用于在所述第一个数据段对应的智能卡命令的类型是第二预定义类型时,将所述接收到的数据中除所述第一个数据段的其他数据发送给与所述装置连接的智能卡虚拟机进行处理;
第二生成发送子模块:用于在所述第一个数据段对应的智能卡命令的类型是第三预定义类型时,根据指令类别字节、指令代码字节和第二参数值、第一参数值和第二随机数生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;
第三生成发送子模块:用于在所述第一个数据段对应的智能卡命令的类型是第四预定义类型时,根据接收到的数据生成第二数据,根据所述第二数据生成校验数据,根据所述第二数据和校验数据生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;
第一判断子模块:用于判断所述装置是否已与智能卡虚拟机建立连接;
建立判断子模块:用于在所述装置未与智能卡虚拟机建立连接时,与智能卡虚拟机建立连接并判断连接是否成功。
其中,所述第一生成发送子模块包括:
第一生成单元:用于生成第一随机数,将所述第一随机数作为数据字段值;
第一获取单元:用于从所述接收到的数据中获取第一参数值;
第一设置单元:用于根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;
第二生成单元:用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第一随机数生成符合预设格式的数据;
第一发送单元:用于将所述第二生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。
其中,所述第二生成发送子模块包括:
第三生成单元:用于生成第二随机数,将所述第二随机数作为数据字段值;
第二获取单元:用于根据所述接收到的数据中的参数从所述第一缓存器中获取第一参数值;
第二设置单元:用于根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;
第四生成单元:用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第二随机数生成符合预设格式的数据;
第二发送单元:用于将所述第四生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。
其中,所述装置还包括第二缓存器;所述处理模块还包括:
第一接收子模块:用于在所述第二生成发送子模块将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理后,接收所述智能卡虚拟机返回的处理结果;
第二存入子模块:用于将所述接收到的智能卡虚拟机返回的处理结果存储到所述第二缓存器中;
第四生成子模块:用于根据第一填充数据、所述处理结果中的密钥版本号和智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;根据所述第二随机数、第二填充数据、所述智能卡虚拟机生成的计数值和所述处理结果中的智能卡虚拟机生成的随机数,生成验证源数据;
第一加密子模块:用于使用所述安全会话密钥基本密钥对所述验证源数据进行加密,生成验证数据;
第二判断子模块:用于判断所述验证数据是否与所述处理结果中的密文信息相符。
其中,所述第四生成子模块包括:
第五生成单元:用于生成所述第一填充数据;
第三获取单元:用于根据所述处理结果中的密钥版本号获取常数值;从所述第二缓存器中获取智能卡虚拟机生成的计数值;
第六生成单元:用于根据所述计数值、所述常数值和所述第一填充数据生成安全会话密钥基本密钥;
第七生成单元:用于生成所述第二随机数和第二填充数据;
第四获取单元:用于从所述第二缓存器中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数;
第八生成单元:用于根据所述第二随机数、所述第二填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成验证源数据。
其中,所述第二判断子模块包括:
第五获取单元:用于从所述第二缓存器中获取所述密文信息;
第一判断单元:用于判断所述验证源数据中的最后8个字节数据是否与所述密文信息相同。
其中,所述第三生成发送子模块包括:
第六获取单元:用于从所述第二缓存器中获取密钥版本号和智能卡虚拟机生成的计数值;
第九生成单元:用于根据第三填充数据、所述密钥版本号和所述计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;第一加密单元:用于所述装置使用预先存储的第一基础密钥分别对所述安全会话密钥的基本密钥和所述命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;
第七获取单元:用于从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数;
第十生成单元:用于根据第三随机数和第四填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成第一数据;
第二加密单元:用于使用所述安全会话密钥对所述第一数据进行加密,生成卡外密文数据;
设置生成单元:用于根据第一个数据段对应的命令设置指令类别字节、指令代码字节和参数,根据所述卡外密文数据、所述指令类别字节、所述指令代码信字节和所述参数生成第二数据;
转化填充单元:用于对所述第二数据进行转化处理生成新第二数据,对所述新第二数据进行填充生成第三数据;
第三加密单元:用于使用所述命令消息识别码会话密钥对所述第三数据进行加密,生成校验数据;
第十一生成单元:用于根据所述新第二数据和所述校验数据,生成符合预设格式的数据;
第三发送单元:用于将所述第十一生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。
其中,所述设置生成单元包括:
第一设置子单元:用于将所述卡外密文数据作为数据字段值;
第二设置子单元:用于根据第一个数据段对应的命令分别设置指令类别字节、指令代码字节、第二参数值;所述装置根据接收到的数据中的参数设置第一参数值;
第一生成子单元:用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述卡外密文数据生成第二数据。
其中,所述转化填充单元包括:
第二生成子单元:用于将所述第二数据中的指令类别字节对应的二进制数中由低位到高位的第三位置为1,生成所述新二进制数;
转化子单元:用于将所述新二进制数转化为十六进制数;
第三生成子单元:用于将所述十六进制数代替所述第二数据中的指令类别字节生成所述新第二数据;
第四生成子单元:用于对所述新第二数据进行填充,生成第三数据。
本发明与现有技术相比,具有以下优点:
本发明提供了一种转换命令模式的方法及装置,用户可根据需要,输入不同类型的数据,通过装置对不同类型数据的处理,生成智能卡可运行的命令,并发送给与其连接的智能卡虚拟机进行处理。本发明提供的方法及装置在很大程度上缩短了调试智能卡中应用的时间,从而提高了测试智能卡的效率。
附图说明
图1为本发明实施例一提供的一种转换命令模式的方法流程图;
图2为本发明实施例二提供的一种插件处理脚本文件的方法流程图;
图3为本发明实施例三提供的一种插件对脚本解析器返回结果进行处理的方法流程图;
图4为本发明实施例四提供的一种插件对与智能卡可执行命令对应的数据进行处理的方法流程图;
图5为本发明实施例五提供的一种插件对与智能卡不可执行命令对应的数据进行处理的方法流程图;
图6为本发明实施例六提供的一种插件将接收的数据转化成智能卡可执行的命令(APDU)格式的方法流程图;
图7为本发明实施例七提供的另一种插件将接收的数据组织成智能卡可执行的命令(APDU)格式的方法流程图;
图8为本发明实施例八提供的一种转化命令模式的装置方框示意图;
图9为图8中的处理模块的一种实现方式的方框示意图;
图10为图9的处理模块中的第一生成发送子模块的方框示意图;
图11为图9的处理模块中的第二生成发送子模块的方框示意图;
图12为图8中的处理模块的另一种实现方式的方框示意图;
图13为图12中的处理模块中的第四生成子模块的方框示意图;
图14为图12中的处理模块中的第二判断子模块的方框示意图;
图15为图12中的处理模块中的第三生成发送子模块的方框示意图;
图16为图15中的第三生成发送子模块中的设置生成单元的方框示意图;
图17为图15中的第三生成发送子模块中的转化填充单元的方框示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
实施例一
本发明实施例一提供了一种转换命令模式的方法,插件将接收到的数据进行解析处理,转化成智能卡虚拟机可执行的命令。在本发明实施例一中,用户启动应用平台(eclipse)后,应用平台(eclipse)调用接口(ILaunchConfigurationDelegate),同时运行该接口(ILaunchConfigurationDelegate)中的函数(Launch),在运行函数(Launch)时加载插件,插件运行时通过侦听接口(addFocusListener)侦听用户输入的数据,通过显示接口(setText)在应用平台上显示运行结果。
参见图1,包括:
步骤101:插件接收到数据后,对其按照空格进行拆分,得到多个数据段;
具体地,在本实施例中,侦听接口(addFocusListene)将侦听到数据发送给插件,插件调用显示接口(setText)将其显示在应用平台上;
步骤102:插件判断拆分得到的第一个数据段的首字符是否符合第一预定义字符,是则执行步骤103,否则执行步骤106;
在本实施例中,第一预定义字符根据用户需要进行设置;优选的,本实施例中的第一预定义字符设置为;如第一个数据段的首字符是,则接收到的数据是与脚本解析器进行交互的数据,如第一数据段的首字符不是,则接收到的数据是插件自身处理的数据或与智能卡虚拟机进行交互的数据;
步骤103:插件删除第一个数据段的首字符;
步骤104:插件获取文件名为删除首字符的第一个数据段的文件内容,并将读取的文件内容发送给脚本解析器进行解析;
本实施例中,步骤104的具体实现过程在实施例二中进行详细描述;
步骤105:插件接收脚本解析器返回的解析结果,通过调用显示接口将处理结果显示在应用平台上,返回步骤101;
优选的,本实施例中,脚本解析器的处理结果为get-status数据,步骤105的具体实现过程详见实施例三;
步骤106:插件判断第一个数据段是否与第二预定义字符串相同,是则执行步骤107,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
步骤107:插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤108;否则通过调用显示接口在应用平台上显示错误代码信息,结束;
步骤108:插件判断第一个数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤109,否则执行步骤110;
本实施例中,步骤108具体为:插件判断第一数据段对应的命令中是否包含第一预设标识,是则接收到的数据为插件自身处理的数据,否则接收到的数据为与智能卡虚拟机交互的数据;本实施例中的第一预设标识具体为var;
步骤109:插件根据第一个数据段对应的智能卡不可执行的命令进行相应处理,顺序执行步骤111;
本实施例中步骤109的具体实现过程以set-var为例,在实施例五中进行详细说明;
步骤110:插件根据第一个数据段对应的智能卡命令进行相应处理,顺序执行步骤111;
本实施例中的步骤110中以get-status、/send、init-update和ext-auth为例,在实施例三、实施例四、实施例六和实施例七中进行进一步的详述;
步骤111:插件通过调用显示接口将处理结果显示在应用平台上。
实施例二
本发明实施例二提供一种插件处理脚本文件的方法,以scriptname为例进行说明,参见图2,包括:
步骤201:插件接收数据;
具体地,在本实施例中,插件接收的数据为:scriptname;
步骤202:插件对当前数据按空格进行拆分,生成多个数据段;
步骤203:插件判断第一个数据段的首字符是否为第一预定义字符,是则执行步骤204,否则执行步骤210;
具体的,本实施例中的第一预定义字符为;
步骤204:插件删除第一个数据段的首字符;
相应地,在本实施例中,删除首字符后的数据为:scriptname;
步骤205:插件从应用平台的目录中获取文件名为删除首字符的第一数据段的文件内容;
具体地,在本实施例中,步骤205具体为:插件在应用平台(eclipse)的当前目录下获取文件名称为scriptname的文件中的内容;
步骤206:插件判断获取的文件内容是否为空,是则插件通过调用显示接口在应用平台上显示错误代码信息,结束,否则执行步骤207;
步骤207:插件将文件内容发送给脚本解析器进行解析;
步骤208:插件接收脚本解析器返回的解析结果,判断解析结果是否为空,是则插件通过调用显示接口在应用平台上显示错误代码信息,结束,否则执行步骤209;
步骤209:插件通过调用显示接口在应用平台上显示接收到的解析结果,继续执行后续操作;
本实施例中的后续操作在实施例三中进行详细说明;
步骤210:插件判断第一数据段是否为与第二预定义字符串,是则执行步骤211,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
本实施例中的第二预定义字符串为get-status、init-update、ext-auth、/send或set-var;
步骤211:插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤212,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
步骤212:插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤213,否则执行步骤214;
步骤213:插件根据第一数据段对应的智能卡不可执行的命令进行相应处理,顺序执行步骤215;
本实施例中步骤213的具体实现过程以set-var为例,在实施例五中进行详细说明;
步骤214:插件根据第一数据段对应的智能卡命令进行相应处理,顺序执行步骤215;
本实施例中的步骤214中以get-status、/send、init-update和ext-auth为例,在实施例三、实施例四、实施例六和实施例七中进行进一步的详述;
步骤215:插件通过调用显示接口将处理结果显示在应用平台上。
实施例三
参见图3,为本发明实施例三提供的插件处理脚本解析器返回结果的方法流程图,以脚本解析器返回结果为“get-status 80;get-status 40;get-status20;get-status 10”为例进行详细说明,如图3所示,包括:
步骤301:插件接收脚本解析器返回的处理结果,判断解析结果中是否有多行数据,是则执行步骤302;否则执行步骤303;
步骤302:插件将第一行数据作为当前数据开始处理;
具体的,本实施例中,解析结果为:
get-status 80
get-status 40
get-status 20
get-status 10;
步骤303:插件对当前数据按空格进行拆分,生成多个数据段;
步骤304:插件判断第一个数据段的首字符不是第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤305,否则通过调用显示接口在应用平台上显示错误代码信息,结束;
具体的,本实施例中的第二预定义字符串为get-status;
步骤305:插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤306,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
步骤306:插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤307,否则执行步骤308;
步骤307:插件根据第一数据段对应的智能卡不可执行命令进行相应操作,并通过调用显示接口将处理结果显示在应用平台上;
本实施例中步骤307的具体实现过程在实施例五中进行详述;
步骤308:插件检测第一数据段对应的命令类型,如是ext-auth mac命令,则执行步骤309,如是init-update version命令,则执行步骤310,如是/send命令,则执行步骤311,如是get-status命令,则执行步骤312;
步骤309:插件根据ext-auth mac命令进行相应处理;
本实施例中步骤309的具体实现过程在实施例七中进行详述;
步骤310:插件根据init-update version命令进行相应处理;
本实施例中步骤310的具体实现过程在实施例六中进行详述;
步骤311:插件根据/send命令进行相应处理;
本实施例中步骤311的具体实现过程在实施例四中进行详述;
步骤312:插件根据第一数据段对应的命令设置指令类别字节、指令代码字节和参数值,根据指令类别字节、指令代码字节、参数值和插件产生的随机数,生成APDU格式的数据;
在本实施例中,生成APDU格式的数据的具体过程为:
a1:插件生成第一随机数,将第一随机数作为数据字段(Data)值;
在本实施例中,插件产生的第一随机数具体为:4F00,长度为02;
a2:插件根据第一数据段对应的命令分别设置指令类别字节(CLA)为80、指令代码字节(INS)为F2、参数P2的值为00;
a3:插件从当前数据中获取参数P1的值;
如当前数据为get-status 80,则参数P1的值为80;
a4:根据指令类别字节、指令代码字节、参数值和第一随机数生成APDU格式的数据;
本实施例中,APDU格式的数据具体为:80 F2 80 00 02 4F00 00;
步骤313:插件判断是否已与智能卡虚拟机建立连接,是则执行步骤316,否则执行步骤314;
步骤314:插件与智能卡虚拟机建立连接;
步骤315:插件判断与智能卡虚拟机的连接是否成功,是则执行步骤316,否则结束操作;
步骤316:插件将APDU格式的数据发送给智能卡虚拟机,并接收智能卡虚拟机对APDU格式的数据进行处理后的结果;
步骤317:插件判断是否处理完接收到的解析结果,是则执行步骤318,否则将下一行数据作为当前数据,返回步骤303;
步骤318:插件调用显示接口在应用平台上显示处理结果。
本实施例中如插件接收到的get-status数据是用户输入的,如有多行数据时,实现方式与本实施例相同,如只有一个数据,则实现方式删除步骤302和步骤315,其他步骤与本实施例相同。
本实施例中插件接收到脚本解析器返回的多行数据时的处理过程,也适用于接收到用户输入的多行数据的情形,在此不再赘述。
实施例四
本发明实施例四提供了一种插件对与智能卡可执行命令对应的数据进行处理的方法,插件接收到与智能卡虚拟机进行交互的数据时,对该数据进行解析处理的过程,如图4所示,具体步骤如下:
步骤401:插件接收数据;
具体地,在本实施例中,插件接收的数据为:
/send 805000000803af7a7d446a24f6;
步骤402:插件对当前所述数据按空格进行拆分,生成多个数据段;
具体的,本实施例中,生成的数据段分别为:第一个数据段/send和第二个数据段805000000803af7a7d446a24f6;
步骤403:插件判断第一个数据段的首字符不为第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤404,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
优选的,在本实施例中,第一预设自定义字符为;第二预定义字符串为/send或send;
步骤404:插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤405,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
具体地,在本实施例中,预定义命令名的集合存储于插件可实现的接口中,当应用平台(eclipse)启动时,该接口已经被添加在函数(Launch)中;步骤404具体为:插件判断在预定义命令名的集合中是否有/send;
步骤405:插件判断当前第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤406,否则执行步骤407;
该步骤中,插件判断接收到的数据是智能卡虚拟机处理的数据还是插件自身处理的数据;
步骤406:插件根据当前第一数据段对应的智能卡不可执行命令进行相应处理,并通过调用显示接口在应用平台上显示处理结果;
本实施例中步骤406的具体实现过程在实施例五中进行详述;
步骤407:插件检测第一数据段对应的命令类型,如是ext-auth mac命令,则执行步骤408,如是init-update version命令,则执行步骤409,如是get-status命令,则执行步骤410,如是/send命令,则执行步骤411;
步骤408:插件根据ext-auth mac命令进行相应处理;
本实施例中步骤408的具体实现过程在实施例七中进行详述;
步骤409:插件根据init-update version命令进行相应处理;
本实施例中步骤409的具体实现过程在实施例六中进行详述;
步骤410:插件根据get-status命令进行相应处理;
本实施例中步骤410的具体实现过程在实施例三中进行详述,在此不再赘述;
步骤411:插件判断是否已与智能卡虚拟机建立连接,是则执行步骤414,否则执行步骤412;
步骤412:插件与智能卡虚拟机建立连接;
步骤413:插件判断与智能卡虚拟机的连接是否成功,是则执行步骤414,否则结束操作;
步骤414:插件将接收到的除第一数据段的其他数据发送给智能卡虚拟机进行处理;
本实施例中,插件将第二个数据段805000000803af7a7d446a24f6发送给智能卡虚拟机进行处理;如第二数据段不足5个字节,则插件将其发送给智能卡虚拟机时,智能卡虚拟机不识别或不进行处理,给插件返回错误提示信息;
步骤415:插件接收智能卡虚拟机返回的处理结果,并通过调用显示接口在应用平台上显示处理结果。
实施例五
本发明实施例五提供了一种插件对与智能卡不可执行命令对应的数据进行处理的方法,以接收到的数据是“/set-var version 1”为例进行详细说明,如图5所示,具体步骤包括:
步骤501:插件接收数据;
具体的,本实施例中接收到的数据为/set-var version 1;
步骤502:插件对接收到的数据按空格进行拆分,生成多个数据段;
具体的,本实施例中生成三个数据段,分别为:第一数据段/set-var、第二数据段version和第三数据段1;
步骤503:插件判断第一个数据段的首字符不为第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤504,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
优选的,在本实施例中的第一预定义字符为,第二预定义字符串为/set-var;
步骤504:插件判断在预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤505,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
具体地,在本实施例中,所述预定义命令集合存储于插件可实现的接口中,当应用平台(eclipse)启动时,所述接口已经被添加在函数(Launch)中;
步骤505:插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤506,否则执行步骤507;
优选的,在本实施例中,所述步骤505具体为:插件判断第一数据段对应的命令中是否包含var;
步骤506:插件将接收到的数据中的参数值存储在第一缓冲器中;
具体的,本实施例中,插件将version参数对应的参数01存储在第一缓存器中;
步骤507:插件根据第一数据段对应的智能卡命令进行相应操作;
本实施例中,步骤507的具体实现过程在实施例三、实施例四、实施例六和实施例七中进行详细说明。
实施例六
本发明实施例六提供了一种插件和智能卡虚拟机相结合,将插件接收的数据组织成智能卡可执行的命令(APDU)格式的方法;基于实施例五的基础上进行实现的,参见图6,本实施例方法包括:
步骤601:插件接收数据;
在本实施例中,插件接收的数据具体为:init-update version,其中version对应的内容为指定密钥版本信息的参数,其对应的值为APDU中的参数P1的值;当version为空时,则APDU命令中的参数字节P1的值为00;
步骤602:插件对接收到的数据按空格进行拆分,生成多个数据段;
本实施例中,生成的数据段为:第一数据段init-update和第二数据段version;
步骤603:插件判断第一个数据段的首字符不为第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤604,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
优选的,在本实施例中的第一预定义字符为,第二预定义字符串为init-update;
步骤604:插件判断预定义命令名的集合中是否有与第一个数据段相同的命令名,是则执行步骤605,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
具体地,在本实施例中,预定义命令名的集合存储于插件可实现的接口中,当应用平台(eclipse)启动时,该接口被添加在函数(Launch)中;
步骤605:插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤606,否则执行步骤607;
步骤606:插件根据第一数据段对应的智能卡不可执行命令进行相应操作,并通过调用显示接口在应用平台上显示处理结果;
本实施例中的步骤606的实现过程在实施例五进行了详细说明,在此不再赘述;
步骤607:插件检测第一数据段对应的命令类型,如是/send命令,则执行步骤608,如是get-status命令,则执行步骤609,如是ext-auth mac命令,则执行步骤610,如是init-update version命令,则执行步骤611;
步骤608:插件根据/send命令进行相应处理;
本实施例中步骤608的具体实现过程参照实施例四,在此不再赘述;
步骤609:插件根据get-status命令进行相应处理;
本实施例中步骤609的具体实现过程参照实施例三,在此不再赘述;
步骤610:插件根据ext-auth mac命令进行相应处理;
本实施例中步骤610的具体实现过程在实施例七中进行详述;
步骤611:插件根据第一数据段对应的命令设置指令类别字节、指令代码字节和参数值,根据指令类别字节、指令代码字节、参数值和插件产生的随机数,生成APDU格式的数据;
在本实施例中,所述生成APDU格式的数据的具体过程为:
A1:插件生成第一随机数,将第一随机数作为数据字段(Data)值;
相应地,在本实施例中,所述插件产生的第一随机数为03af7a7d446a24f6,该第一随机数的长度为08;
A2:插件根据第一数据段对应的命令分别设置指令类别字节(CLA)为80、指令代码字节(INS)为50、参数P2的值为00;
A3:根据参数version从对应的第一缓冲器中获取相应的值;如获取到继续执行步骤A4,否则P1的值为默认值00;
优选的,本实施例是基于实施例五实现的,获取值为01,即ADPU命令中P1的值为01;
A4:根据指令类别字节、指令代码字节、参数值和第一随机数生成APDU格式的数据;
相应地,在本实施例中,所述APDU格式的数据为:80 50 01 00 0803af7a7d446a24f600;
步骤612:插件判断是否已与智能卡虚拟机建立连接,是则执行步骤615,否则执行步骤613;
步骤613:插件与智能卡虚拟机建立连接;
步骤614:插件判断与智能卡虚拟机的连接是否成功,是则执行步骤615,否则结束操作;
步骤615:插件向智能卡虚拟机发送APDU格式的数据;
本实施例中,智能卡虚拟机接收APDU格式的数据并进行处理,将处理结果返回给插件;
在本实施例中,处理结果具体为:
00007118035454911734
FF02
000C
4081ED9718CD
48257D1BDAA46CAA
9000
其中,FF为密钥版本号,000C为智能卡虚拟机生成的计数值,随着认证次数的变化而变化,4081ED9718CD为智能卡虚拟机生成的随机数,48257D1BDAA46CAA为智能卡虚拟机中的密文信息,9000为状态码,标识处理正常;
步骤616:插件接收智能卡虚拟机返回的处理结果,根据生成的第一填充数据、处理结果中的密钥版本号和智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;
本实施例中,插件将接收到的处理结果存储在response变量中;生成安全会话密钥基本密钥616具体为:
B1:插件生成第一填充数据;
具体的,在本实施中的第一填充数据具体为:000000000000000000000000;
B2:插件根据智能卡虚拟机返回处理结果中的密钥版本号(FF),获取常数值;
常数值分为三种类别:会话加密会话密钥对应的常数值为0182、数据加密密钥对应的常数值为0181、命令消息识别码会话密钥对应的常数值为0101;本实施例中获取的常数值具体为0182;
B3:插件从response变量中获取智能卡虚拟机生成的计数值;
在本实施例中,计数值为000C;
B4:插件根据常数值、智能卡虚拟机生成的计数值和第一填充数据生成安全会话密钥基本密钥;
在本实施例中,生成的安全会话密钥基本密钥具体为:
0182 000C 000000000000000000000000;
步骤617:插件根据生成的第二随机数、第二填充数据、接收到的处理结果中的智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数,生成验证源数据;
本实施例中,生成验证源数据具体为:
C1:插件生成第二随机数和第二填充数据;
在本实施例中,第二随机数具体为03af7a7d446a24f6;第二填充数据的位数为8的整数倍,优选的,第二填充数据的最高位为8,其它位为0,本实施例中填充数据具体为:8000000000000000;
C2:插件从response中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数,根据第二随机数、第二填充数据、智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数进行生成验证源数据;
在本实施例中,所述验证源数据具体为:
03af7a7d446a24f6 000C 4081ED9718CD 8000000000000000;
步骤618:插件使用安全会话密钥基本密钥对验证源数据进行加密,生成验证数据;
步骤619:插件判断验证数据的最后8个字节数据是否与智能卡虚拟机返回的处理结果中的密文信息相同,是则执行步骤620,否则结束操作;
步骤620:插件通过调用显示接口在应用平台上显示虚拟机返回的处理结果;
本实施例中,应用平台上显示的是:
00007118035454911734
FF02
000C
4081ED9718CD
48257D1BDAA46CAA
9000。
实施例七
本发明实施例七提供了另一种插件和智能卡虚拟机相结合,基于实施例六的基础上,将插件接收的数据组织成智能卡可执行的命令(APDU)格式的方法,参见图7,具体步骤如下:
步骤701:插件接收数据;
优选的,在本实施例中,插件接收的数据为:ext-auth mac,其中,ext-auth为命令字,mac为参数,参数mac指定安全级别,标识在APDU的指令参数P1中,P1的值为01;参数mac可以用plain替换,此时在APDU的指令参数字节P1的值为00;参数mac还可以用enc替换,此时在APDU的指令参数字节P1的值为02;
步骤702:插件对接收到的数据按空格进行拆分,生成多个数据段;
本实施例中,生成的数据段为:第一数据段ext-auth和第二数据段mac;
步骤703:插件判断第一个数据段的首字符不是第一预定义字符后,判断第一数据段是否为第二预定义字符串,是则执行步骤704,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
优选的,在本实施例中的第一预定义字符为,第二预定义字符串为ext-auth;
步骤704:插件判断预定义命令名的集合中是否有与第一数据段相同的命令名,是则执行步骤705,否则插件通过调用显示接口在应用平台上显示错误代码信息,结束;
具体地,在本实施例中,所述预定义命令集合存储于插件可实现的接口中,当应用平台(eclipse)启动时,该接口被添加在函数(Launch)中;
步骤705:插件判断第一数据段对应的命令是否为智能卡不可执行的命令,是则执行步骤706,否则执行步骤707;
步骤706:插件根据第一数据段对应的智能卡不可执行命令进行相应操作,并通过调用显示接口在应用平台上显示处理结果;
本实施例中的步骤706的处理过程在实施例五中进行了详述,再此不再赘述;
步骤707:插件检测第一数据段对应的命令类型,如是/send,则执行步骤708,如是/get-status命令,则执行步骤709,如是init-update version命令,则执行步骤710,如是ext-auth mac命令,则执行步骤711;
步骤708:插件根据/send命令进行相应处理;
本实施例中步骤708的实现过程参照实施例四,再此不再赘述;
步骤709:插件根据get-status命令进行相应处理;
本实施例中步骤709的实现过程参照实施例三中的描述,再此不再赘述;
步骤710:插件根据init-update version命令进行相应处理;
本实施例中步骤710的实现过程参照实施例六,再此不再赘述;
步骤711:插件从response变量中获取密钥版本号(FF)和智能卡虚拟机生成的计数值,根据生成的第一填充数据、获取的密钥版本号(FF)和智能卡虚拟机生成的计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;
优选的,在本实施例中,生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥的实现过程具体为:
C1:插件生成第一填充数据;
具体地,在本实施中的第一填充数据具体为:000000000000000000000000;
C2:插件根据智能卡虚拟机返回的密钥版本号,获取对应的常数值;
具体的,本实施例中获取的常数值为0182和0101;
C3:插件从response变量中获取智能卡虚拟机生成的计数值;
在本实施例中,计数值为000C;
C4:插件根据获取的常数值、智能卡虚拟机生成的计数值和第一填充数据生成安全会话密钥基本密钥和命令消息识别码会话密钥的基本密钥;
具体的,在本实施例中,安全会话密钥的基本密钥为:
0182 000C 000000000000000000000000;
命令消息识别码会话密钥的基本密钥为:
0101 000C 000000000000000000000000;
步骤712:插件使用预先存储的第一基础密钥分别对安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;
优选的,在本实施例中,第一基础密钥为:04142434445464748494a4b4c4d4f;生成的安全会话密钥为:400154382C6EA25245C4F297DF643819;命令消息识别码会话密钥为:98DA135749C27A1F52983815465B3B08
步骤713:插件从response变量中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数,根据生成的第一随机数和第二填充数据、智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数生成第一数据;
具体的,在本实施例中,生成第一数据的具体过程为:
D1:插件生成第一随机数;
本实施例的第一随机数为:4081ED9718CD。
D2:插件生成第二填充数据;
本实施例的第二填充数据的位数为8的整数倍,优选的,第二填充数据的最高位为8,其它位为0;本实施例中第第二填充数据为:8000000000000000;
D3:插件从response变量中获取智能卡虚拟机生成的计数值、智能卡虚拟机生成的随机数,根据智能卡虚拟机生成的计数值、智能卡虚拟机生成的随机数、第一随机数和第二填充数据生成第一数据;
在本实施例中,生成的第一数据具体为:
000C 4081ED9718CD 4081ED9718CD 8000000000000000;
步骤714:插件用安全会话密钥对第一数据进行加密,生成卡外密文数据;
具体的,在本实施例中,卡外密文数据为:619F9D758006F9B6;
步骤715:插件根据第一数据段对应的命令设置指令类别字节、指令代码字节和参数,根据指令类别字节、指令代码信字节、卡外密文数据和参数生成第二数据;
优选的,在本实施例中生成第二数据的过程具体为:
E1:插件将卡外密文数据作为数据字段(Data)值;
在本实施例中,所述数据字段(Data)值为619F9D758006F9B6,卡外密文数据的长度为10;
E2:插件根据第一数据段对应的命令分别设置指令类别字节(CLA)为80、指令代码字节(INS)为82、参数P2的值为00;
E3:插件根据参数mac设置P1对应的值为00;
E4:根据指令类别字节、指令代码字节、参数值和卡外密文数据生成第二数据;
在本实施例中,第二数据具体为:
80 82 01 00 10 619F9D758006F9B6;
步骤716:插件对第二数据进行转化处理生成新第二数据,对新第二数据进行填充生成第三数据;
本实施例中,步骤609的具体实现过程为:
F1:插件将第二数据中的指令类别字节(80)对应的二进制数(1000 0000)中由低位到高位的第三位置为1,生成新二进制数(1000 0100),将新二进制数(1000 0100)转化为十六进制数(84),将十六进制数(84)替换第二数据中的指令类别信息生成新第二数据;
本实施例中的新第二数据具体为:
84 82 01 00 10 619F9D758006F9B6;
F2:插件对新第二数据进行填充,生成第三数据;
具体的,在本实施例中,对新第二数据进行填充的第一个字节为80,后续位补0直至新第二数据位长为8的整数倍;本实施例中,第三数据具体为:848201 00 10 619F9D758006F9B6 800000;
步骤717:插件使用命令消息识别码会话密钥对第三数据进行加密,生成mac域;
具体的,在本实施例中,生成的mac域为:C290DF14738F005F;
步骤718:插件根据新第二数据和mac域,生成APDU格式的数据;
相应地,在本实施例中APDU格式的数据为:
Figure BDA0000126379900000351
步骤719:插件判断是否已与智能卡虚拟机建立连接,是则执行步骤722,否则执行步骤720;
步骤720:插件与智能卡虚拟机建立连接;
步骤721:插件判断与智能卡虚拟机的连接是否成功,是则执行步骤722,否则结束操作;
步骤722:插件将APDU格式的数据发送给智能卡虚拟机进行处理;
具体的,在本实施例中,处理结果为:9000;
步骤723:插件接收智能卡虚拟机返回的处理结果,并通过调用显示接口在应用平台上显示处理结果。
实施例八
本发明实施例八提供一种转换命令模式的装置,如图8所示,包括:
接收模块81:用于接收用户输入的数据、脚本解析器返回的解析结果、虚拟机返回的处理结果;
拆分模块82:用于对接收到的数据按照空格进行拆分,得到多个数据段;
第一判断模块83:用于判断拆分得到的第一个数据段的首字符是否符合第一预定义字符;
删除模块84:用于删除第一个数据段的首字符;
第一获取模块85:用于获取文件名为删除首字符的第一个数据段的文件;
第二判断模块86:用于判断第一获取模块85获取到的文件内容是否为空;
发送模块87:用于将非空文件内容发送给脚本解析器进行解析;
第三判断模块88:用于在第一个数据段的首字符不符合第一预定义字符时,判断第一个数据段是否与第二预定义字符串相同;在所述第一个数据段与第二预定义字符串相同时,判断在预定义命令名的集合中是否有与第一个数据段相同的命令名;在预定义命令名的集合中有与第一个数据段相同的命令名时,判断第一个数据段对应的命令是否为智能卡不可执行的命令;
存入模块89:用于在第一个数据段对应的命令为智能卡不可执行的命令时,将接收到的数据中的参数值存储在缓冲器中;
处理模块90:用于在所述第一个数据段对应的命令为智能卡命令时进行下一步操作;
输出模块91:用于调用函数将接收到的数据在应用平台上显示输出。
本发明实施例的装置还包括第四判断模块:用于判断接收到的解析结果是否为空;在解析结果不为空时判断解析结果中是否有多行数据,判断是否处理完接收到的解析结果。
如图9所示,处理模块90还包括:
检测子模块900:用于在第一个数据段对应的命令为智能卡命令时,检测第一个数据段对应的智能卡命令的类型;
第一生成发送子模块901:用于在第一个数据段对应的智能卡命令的类型是第一预定义类型时,根据接收到的数据生成符合预设格式的数据,将符合预设格式的数据发送给与该装置连接的智能卡虚拟机进行处理;
第一发送子模块902:用于在第一个数据段对应的智能卡命令的类型是第二预定义类型时,将接收到的数据中除第一个数据段的其他数据发送给与该装置连接的智能卡虚拟机进行处理;
第二生成发送子模块903:用于在第一个数据段对应的智能卡命令的类型是第三预定义类型时,根据指令类别字节、指令代码字节和第二参数值、第一参数值和第二随机数生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;
第三生成发送子模块904:用于在第一个数据段对应的智能卡命令的类型是第四预定义类型时,根据接收到的数据生成第二数据,根据第二数据生成校验数据,根据第二数据和校验数据生成符合预设格式的数据,将符合预设格式的数据发送给与该装置连接的智能卡虚拟机进行处理;
第一判断子模块905:用于判断该装置是否已与智能卡虚拟机建立连接;
建立判断子模块906:用于在该装置未与智能卡虚拟机建立连接时,将该装置与智能卡虚拟机建立连接并判断连接是否成功。
其中,参见图10,第一生成发送子模块901包括:
第一生成单元9010:用于生成第一随机数,将第一随机数作为数据字段值;
第一获取单元9011:用于从接收到的数据中获取第一参数值;
第一设置单元9012:用于根据第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;
第二生成单元9013:用于根据指令类别字节、指令代码字节、第一参数值、第二参数值和第一随机数生成APDU格式的数据;
第一发送单元9014:用于将第二生成单元9013生成的APDU格式的数据发送给与该装置连接的智能卡虚拟机进行处理。
其中,参见图11,第二生成发送子模块903包括:
第三生成单元9030:用于生成第二随机数,将第二随机数作为数据字段值;
第二获取单元9031:用于根据接收到的数据中的参数从第一缓存器中获取第一参数值;
第二设置单元9032:用于根据第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;
第四生成单元9033:用于根据指令类别字节、指令代码字节、第一参数值、第二参数值和第二随机数生成符合预设格式的数据;
第二发送单元9034:用于将第四生成单元9033生成的符合预设格式的数据发送给与该装置连接的智能卡虚拟机进行处理。
其中,该装置还包括第二缓存器;如图12所述,处理模块90还包括:
第一接收子模块907:用于在第二生成发送子模块903将符合预设格式的数据发送给与该装置连接的智能卡虚拟机进行处理后,接收智能卡虚拟机返回的处理结果;
第二存入子模块908:用于将接收到的智能卡虚拟机返回的处理结果存储到第二缓存器中;
第四生成子模块909:用于根据第一填充数据、处理结果中的密钥版本号和智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;根据第二随机数、第二填充数据、智能卡虚拟机生成的计数值和处理结果中的智能卡虚拟机生成的随机数,生成验证源数据;
第一加密子模块910:用于使用安全会话密钥基本密钥对验证源数据进行加密,生成验证数据;
第二判断子模块911:用于判断验证数据是否与处理结果中的密文信息相符。
其中,参见如13,第四生成子模块909包括:
第五生成单元9090:用于生成第一填充数据;
第三获取单元9091:用于根据处理结果中的密钥版本号获取常数值;从第二缓存器中获取智能卡虚拟机生成的计数值;
第六生成单元9092:用于根据计数值、常数值和第一填充数据生成安全会话密钥基本密钥;
第七生成单元9093:用于生成第二随机数和第二填充数据;
第四获取单元9094:用于从第二缓存器中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数;
第八生成单元9095:用于根据第二随机数、第二填充数据、计数值和智能卡虚拟机生成的随机数生成验证源数据。
如图14所示,第二判断子模块911包括:
第五获取单元9110:用于从第二缓存器中获取所述密文信息;
第一判断单元9111:用于判断验证源数据中的最后8个字节数据是否与所述密文信息相同。
参见图15,第三生成发送子模块904包括:
第六获取单元9040:用于从第二缓存器中获取密钥版本号和智能卡虚拟机生成的计数值;
第九生成单元9041:用于根据第三填充数据、密钥版本号和计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;
第一加密单元9042:用于使用预先存储的第一基础密钥分别对安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;
第七获取单元9043:用于从第二缓存器中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数;
第十生成单元9044:用于根据第三随机数和第四填充数据、计数值和智能卡虚拟机生成的随机数生成第一数据;
第二加密单元9045:用于使用安全会话密钥对第一数据进行加密,生成卡外密文数据;
设置生成单元9046:用于根据第一个数据段对应的命令设置指令类别字节、指令代码字节和参数,根据所述卡外密文数据、指令类别字节、指令代码信字节和参数生成第二数据;
转化填充单元9047:用于对第二数据进行转化处理生成新第二数据,对新第二数据进行填充生成第三数据;
第三加密单元9048:用于使用命令消息识别码会话密钥对第三数据进行加密,生成校验数据;
第十一生成单元9049:用于根据新第二数据和校验数据,生成符合预设格式的数据;
第三发送单元9050:用于将第十一生成单元9047生成的符合预设格式的数据发送给与该装置连接的智能卡虚拟机进行处理。
如图16所示,设置生成单元9046包括:
第一设置子单元90460:用于将卡外密文数据作为数据字段值;
第二设置子单元90461:用于根据第一个数据段对应的命令分别设置指令类别字节、指令代码字节、第二参数值;所述装置根据接收到的数据中的参数设置第一参数值;
第一生成子单元90462:用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述卡外密文数据生成第二数据。
参见图17,转化填充单元9047包括:
第二生成子单元90470:用于将所述第二数据中的指令类别字节对应的二进制数中由低位到高位的第三位置为1,生成所述新二进制数;
转化子单元90471:用于将所述新二进制数转化为十六进制数;
第三生成子单元90472:用于将所述十六进制数代替所述第二数据中的指令类别字节生成所述新第二数据;
第四生成子单元90473:用于对所述新第二数据进行填充,生成第三数据。
本发明实施例八中的校验数据具体为mac域,符合预设格式的数据为智能卡可执行的命令(APDU)。
本发明提供了一种转换命令模式的方法及装置,用户可根据需要,输入不同类型的数据,通过装置对不同类型数据的处理,生成智能卡可运行的命令,并发送给与其连接的智能卡虚拟机进行处理。本发明提供的方法及装置在很大程度上缩短了调试智能卡中应用的时间,从而提高了测试智能卡的效率。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明公开的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。

Claims (28)

1.一种转换命令模式的方法,其特征在于,包括:
步骤A:装置对接收到的数据按照空格进行拆分;
步骤B:所述装置判断拆分得到的第一个数据段的首字符是否符合第一预定义字符,是则执行步骤C,否则执行步骤E;
步骤C:所述装置删除所述第一个数据段的首字符,获取文件名为所述删除首字符的第一个数据段的文件内容,并将所述获取的非空文件内容发送给脚本解析器进行解析;
步骤D:所述装置接收所述脚本解析器返回的解析结果,返回步骤A;
步骤E:所述装置判断所述第一个数据段是否与第二预定义字符串相同,是则执行步骤F,否则结束;
步骤F:所述装置判断在预定义命令名的集合中是否有与所述第一个数据段相同的命令名,是则执行步骤G,否则结束;
步骤G:所述装置判断所述第一个数据段对应的命令是否为智能卡不可执行的命令,是则将所述接收到的数据中除所述第一个数据段之外的参数值存储在缓冲器中,否则按照所述第一数据段对应的智能卡命令进行下一步操作。
2.如权利要求1所述的方法,其特征在于,所述步骤C具体包括:
步骤C1:所述装置删除所述第一个数据段的首字符;
步骤C2:所述装置从应用平台的目录中获取文件名为所述删除首字符的第一个数据段的文件内容;
步骤C3:所述装置判断所述文件内容是否为空,是则结束,否则将所述文件内容发送给脚本解析器进行处理。
3.如权利要求2所述的方法,其特征在于,所述步骤D具体包括:
步骤D1:所述装置接收所述脚本解析器返回的解析结果,判断所述解析结果是否为空,是则结束,否则执行步骤D2;
步骤D2:所述装置判断所述解析结果中是否有多行数据,是则将第一行数据作为当前数据开始处理,顺序执行步骤D3,否则返回步骤A;
步骤D3:所述装置将当前数据进行拆分,得到多个数据段,顺序执行步骤B-步骤G的操作;
步骤D4:所述装置判断是否处理完所述接收到的解析结果,是则调用函数将处理结果以显示方式输出,否则将下一行数据作为当前数据,返回步骤D3。
4.如权利要求1所述的方法,其特征在于,所述步骤G中所述装置判断所述第一个数据段对应的命令是否为智能卡不可执行的命令具体为:判断所述第一个数据段对应的命令中是否包含第一预设标识。
5.如权利要求1所述的方法,其特征在于,所述步骤G中的按照所述第一数据段对应的智能卡命令进行下一步操作包括:
步骤S2:所述装置根据所述接收到的数据生成符合预设格式的数据,并将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6;或
步骤S3:所述装置将所述接收到的数据中除所述第一个数据段之外的其他数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6;或
步骤S4:所述装置根据指令类别字节、指令代码字节和第二参数值、第一参数值和第二随机数生成符合预设格式的数据,并将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6;或
步骤S5:所述装置根据接收到的数据生成第二数据,根据所述第二数据生成校验数据,根据所述第二数据和校验数据生成符合预设格式的数据并发送给与所述装置连接的智能卡虚拟机进行处理,顺序执行步骤S6;
步骤S6:所述装置接收所述智能卡虚拟机返回的处理结果,并调用函数在应用平台上显示所述处理结果。
6.如权利要求5所述的方法,其特征在于,在所述步骤S2之前还包括:
步骤S1:所述装置检测所述第一个数据段对应的智能卡命令的类型,如是第一预定义类型,则执行步骤S2;如是第二预定义类型,则执行步骤S3;如是第三预定义类型,则执行步骤S4;如是第四预定义类型,则执行步骤S5。
7.如权利要求5所述的方法,其特征在于,所述步骤S2包括:
所述装置生成第一随机数,将所述第一随机数作为数据字段值;从所述接收到的数据中获取第一参数值,根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值,根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第一随机数生成符合预设格式的数据;
所述装置判断是否已与智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
8.如权利要求5所述的方法,其特征在于,所述步骤S3包括:
所述装置判断是否已与智能卡虚拟机建立连接,是则将所述接收到的数据中除所述第一个数据段的其他数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述接收到的数据中除所述第一个数据段的其他数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
9.如权利要求5所述的方法,其特征在于,所述步骤S4包括:
所述装置生成所述第二随机数,将所述第二随机数作为数据字段值,根据所述接收到的数据中的参数从所述第一缓存器中获取所述第一参数值,根据所述第一个数据段对应的命令设置所述指令类别字节、所述指令代码字节和所述第二参数值,根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第二随机数生成符合预设格式的数据;
所述装置判断是否已与所述智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
10.如权利要求8所述的方法,其特征在于,所述步骤S6中所述装置接收处理结果与调用函数将所述处理结果以显示方式输出之间包括:
步骤S61:所述装置接收处理结果并存储到第二缓存器中,根据第一填充数据、所述处理结果中的密钥版本号和所述智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;
步骤S62:所述装置根据所述第二随机数、第二填充数据、所述智能卡虚拟机生成的计数值和所述处理结果中的智能卡虚拟机生成的随机数,生成验证源数据;
步骤S63:所述装置使用所述安全会话密钥基本密钥对所述验证源数据进行加密,生成验证数据;
步骤S64:所述装置判断所述验证数据是否与所述处理结果中的密文信息相符,是则将所述处理结果以显示方式输出,否则结束。
11.如权利要求10所述的方法,其特征在于,所述步骤S61包括:
所述装置生成所述第一填充数据;
所述装置根据所述处理结果中的密钥版本号获取常数值;
所述装置从所述第二缓存器中获取智能卡虚拟机生成的计数值,根据所述计数值、所述常数值和所述第一填充数据生成安全会话密钥基本密钥。
12.如权利要求11所述的方法,其特征在于,所述步骤S62包括:
所述装置生成所述第二随机数和第二填充数据;
所述装置从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数;
所述装置根据所述第二随机数、所述第二填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成验证源数据。
13.如权利要求12所述的方法,其特征在于,所述步骤S64中所述装置判断所述验证数据是否与所述处理结果中的密文信息相符,包括:
所述装置从所述第二缓存器中获取所述密文信息,判断所述验证源数据中的最后8个字节数据是否与所述密文信息相同。
14.如权利要求5所述的方法,其特征在于,所述步骤S5包括:
步骤S51:所述装置从第二缓存器中获取密钥版本号和智能卡虚拟机生成的计数值,根据第三填充数据、所述密钥版本号和所述计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;
步骤S52:所述装置使用预先存储的第一基础密钥分别对所述安全会话密钥的基本密钥和所述命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;
步骤S53:所述装置从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数,根据生成的第三随机数和第四填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成第一数据;
步骤S54:所述装置使用所述安全会话密钥对所述第一数据进行加密,生成卡外密文数据;
步骤S55:所述装置根据第一个数据段对应的命令设置指令类别字节、指令代码字节和参数,根据所述卡外密文数据、所述指令类别字节、所述指令代码信字节和所述参数生成第二数据;
步骤S56:所述装置对所述第二数据进行转化处理生成新第二数据,对所述新第二数据进行填充生成第三数据;
步骤S57:所述装置使用所述命令消息识别码会话密钥对所述第三数据进行加密,生成校验数据;
步骤S58:所述装置根据所述新第二数据和所述校验数据,生成符合预设格式的数据;
步骤S59:所述装置判断是否已与智能卡虚拟机建立连接,是则将所述符合预设格式的数据发送给所述智能卡虚拟机;否则与智能卡虚拟机建立连接,并判断连接是否成功,如成功则将所述符合预设格式的数据发送给所述智能卡虚拟机进行处理,如未成功则结束。
15.如权利要求14所述的方法,其特征在于,所述步骤S51具体包括:
所述装置生成第三填充数据;从所述第二存储器中获取密钥版本号和智能卡虚拟机生成的计数值;根据所述密钥版本号获取对应的第一常数值和第二常数值;
所述装置根据所述第一常数值、所述计数值和所述第三填充数据生成安全会话密钥基本密钥,所述装置根据所述第二常数值、所述计数值和所述第三填充数据生成命令消息识别码会话密钥的基本密钥。
16.如权利要求15所述的方法,其特征在于,所述S55具体包括:
所述装置将所述卡外密文数据作为数据字段值;
所述装置根据所述第一个数据段对应的命令分别设置指令类别字节、指令代码字节、第二参数值;所述装置根据接收到的数据中的参数设置第一参数值;
所述装置根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述卡外密文数据生成所述第二数据。
17.如权利要求16所述的方法,其特征在于,所述S56具体包括:
所述装置将所述第二数据中的指令类别字节对应的二进制数中由低位到高位的第三位置为1,生成所述新二进制数,将所述新二进制数转化为十六进制数,将所述十六进制数代替所述第二数据中的指令类别字节生成所述新第二数据;所述装置对所述新第二数据进行填充,生成第三数据。
18.一种转换命令模式的装置,其特征在于,包括:
接收模块:用于接收用户输入的数据、脚本解析器返回的解析结果、虚拟机返回的处理结果;
拆分模块:用于对所述接收到的数据按照空格进行拆分,得到多个数据段;
第一判断模块:用于判断拆分得到的第一个数据段的首字符是否符合第一预定义字符;
删除模块:用于删除所述第一个数据段的首字符;
第一获取模块:用于获取文件名为所述删除首字符的第一个数据段的文件;
第二判断模块:用于判断所述文件内容是否为空;
发送模块:用于将所述非空文件内容发送给脚本解析器进行解析;
第三判断模块:用于在第一个数据段的首字符不符合第一预定义字符时,判断所述第一个数据段是否与第二预定义字符串相同;当所述第一个数据段与第二预定义字符串相同时,判断在预定义命令名的集合中是否有与所述第一个数据段相同的命令名;在预定义命令名的集合中有与所述第一个数据段相同的命令名时,判断所述第一个数据段对应的命令是否为智能卡不可执行的命令;
存入模块:用于在所述第一个数据段对应的命令为智能卡不可执行的命令时,将所述接收到的数据中的参数值存储在缓冲器中;
处理模块:用于在所述第一个数据段对应的命令为智能卡命令时进行下一步操作;
输出模块:用于调用函数将接收到的数据在应用平台上显示输出。
19.如权利要求18所述的装置,其特征在于,还包括第四判断模块:用于判断接收到的所述解析结果是否为空;在所述解析结果不为空时判断所述解析结果中是否有多行数据,判断是否处理完所述接收到的解析结果。
20.如权利要求18或19所述的装置,其特征在于,所述处理模块还包括:
检测子模块:用于在所述第一个数据段对应的命令为智能卡命令时,检测所述第一个数据段对应的智能卡命令的类型;
第一生成发送子模块:用于在所述第一个数据段对应的智能卡命令的类型是第一预定义类型时,根据所述接收到的数据生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;
第一发送子模块:用于在所述第一个数据段对应的智能卡命令的类型是第二预定义类型时,将所述接收到的数据中除所述第一个数据段的其他数据发送给与所述装置连接的智能卡虚拟机进行处理;
第二生成发送子模块:用于在所述第一个数据段对应的智能卡命令的类型是第三预定义类型时,根据指令类别字节、指令代码字节和第二参数值、第一参数值和第二随机数生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;
第三生成发送子模块:用于在所述第一个数据段对应的智能卡命令的类型是第四预定义类型时,根据接收到的数据生成第二数据,根据所述第二数据生成校验数据,根据所述第二数据和校验数据生成符合预设格式的数据,将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理;
第一判断子模块:用于判断所述装置是否已与智能卡虚拟机建立连接;
建立判断子模块:用于在所述装置未与智能卡虚拟机建立连接时,与智能卡虚拟机建立连接并判断连接是否成功。
21.如权利要求20所述的装置,其特征在于,所述第一生成发送子模块包括:
第一生成单元:用于生成第一随机数,将所述第一随机数作为数据字段值;
第一获取单元:用于从所述接收到的数据中获取第一参数值;
第一设置单元:用于根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;
第二生成单元:用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第一随机数生成符合预设格式的数据;
第一发送单元:用于将所述第二生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。
22.如权利要求20所述的装置,其特征在于,所述第二生成发送子模块包括:
第三生成单元:用于生成第二随机数,将所述第二随机数作为数据字段值;
第二获取单元:用于根据所述接收到的数据中的参数从所述第一缓存器中获取第一参数值;
第二设置单元:用于根据所述第一个数据段对应的命令设置指令类别字节、指令代码字节和第二参数值;
第四生成单元:用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述第二随机数生成符合预设格式的数据;
第二发送单元:用于将所述第四生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。
23.如权利要求22所述的装置,其特征在于,所述装置还包括第二缓存器;
所述处理模块还包括:
第一接收子模块:用于在所述第二生成发送子模块将所述符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理后,接收所述智能卡虚拟机返回的处理结果;
第二存入子模块:用于将所述接收到的智能卡虚拟机返回的处理结果存储到所述第二缓存器中;
第四生成子模块:用于根据第一填充数据、所述处理结果中的密钥版本号和智能卡虚拟机生成的计数值,生成安全会话密钥基本密钥;根据所述第二随机数、第二填充数据、所述智能卡虚拟机生成的计数值和所述处理结果中的智能卡虚拟机生成的随机数,生成验证源数据;
第一加密子模块:用于使用所述安全会话密钥基本密钥对所述验证源数据进行加密,生成验证数据;
第二判断子模块:用于判断所述验证数据是否与所述处理结果中的密文信息相符。
24.如权利要求23所述的装置,其特征在于,所述第四生成子模块包括:
第五生成单元:用于生成所述第一填充数据;
第三获取单元:用于根据所述处理结果中的密钥版本号获取常数值;从所述第二缓存器中获取智能卡虚拟机生成的计数值;
第六生成单元:用于根据所述计数值、所述常数值和所述第一填充数据生成安全会话密钥基本密钥;
第七生成单元:用于生成所述第二随机数和第二填充数据;
第四获取单元:用于从所述第二缓存器中获取智能卡虚拟机生成的计数值和智能卡虚拟机生成的随机数;
第八生成单元:用于根据所述第二随机数、所述第二填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成验证源数据。
25.如权利要求24所述的装置,其特征在于,所述第二判断子模块包括:
第五获取单元:用于从所述第二缓存器中获取所述密文信息;
第一判断单元:用于判断所述验证源数据中的最后8个字节数据是否与所述密文信息相同。
26.如权利要求20所述的装置,其特征在于,所述第三生成发送子模块包括:
第六获取单元:用于从所述第二缓存器中获取密钥版本号和智能卡虚拟机生成的计数值;
第九生成单元:用于根据第三填充数据、所述密钥版本号和所述计数值生成安全会话密钥的基本密钥和命令消息识别码会话密钥的基本密钥;第一加密单元:用于所述装置使用预先存储的第一基础密钥分别对所述安全会话密钥的基本密钥和所述命令消息识别码会话密钥的基本密钥进行加密,生成安全会话密钥和命令消息识别码会话密钥;
第七获取单元:用于从所述第二缓存器中获取所述智能卡虚拟机生成的计数值和所述智能卡虚拟机生成的随机数;
第十生成单元:用于根据第三随机数和第四填充数据、所述计数值和所述智能卡虚拟机生成的随机数生成第一数据;
第二加密单元:用于使用所述安全会话密钥对所述第一数据进行加密,生成卡外密文数据;
设置生成单元:用于根据第一个数据段对应的命令设置指令类别字节、指令代码字节和参数,根据所述卡外密文数据、所述指令类别字节、所述指令代码信字节和所述参数生成第二数据;
转化填充单元:用于对所述第二数据进行转化处理生成新第二数据,对所述新第二数据进行填充生成第三数据;
第三加密单元:用于使用所述命令消息识别码会话密钥对所述第三数据进行加密,生成校验数据;
第十一生成单元:用于根据所述新第二数据和所述校验数据,生成符合预设格式的数据;
第三发送单元:用于将所述第十一生成单元生成的符合预设格式的数据发送给与所述装置连接的智能卡虚拟机进行处理。
27.如权利要求26所述的装置,其特征在于,所述设置生成单元包括:
第一设置子单元:用于将所述卡外密文数据作为数据字段值;
第二设置子单元:用于根据第一个数据段对应的命令分别设置指令类别字节、指令代码字节、第二参数值;所述装置根据接收到的数据中的参数设置第一参数值;
第一生成子单元:用于根据所述指令类别字节、所述指令代码字节、所述第一参数值、所述第二参数值和所述卡外密文数据生成第二数据。
28.如权利要求27所述的装置,其特征在于,所述转化填充单元包括:
第二生成子单元:用于将所述第二数据中的指令类别字节对应的二进制数中由低位到高位的第三位置为1,生成所述新二进制数;
转化子单元:用于将所述新二进制数转化为十六进制数;
第三生成子单元:用于将所述十六进制数代替所述第二数据中的指令类别字节生成所述新第二数据;
第四生成子单元:用于对所述新第二数据进行填充,生成第三数据。
CN201110449307.6A 2011-12-29 2011-12-29 一种转换命令模式的方法及装置 Active CN102591699B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201110449307.6A CN102591699B (zh) 2011-12-29 2011-12-29 一种转换命令模式的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201110449307.6A CN102591699B (zh) 2011-12-29 2011-12-29 一种转换命令模式的方法及装置

Publications (2)

Publication Number Publication Date
CN102591699A true CN102591699A (zh) 2012-07-18
CN102591699B CN102591699B (zh) 2014-10-29

Family

ID=46480411

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201110449307.6A Active CN102591699B (zh) 2011-12-29 2011-12-29 一种转换命令模式的方法及装置

Country Status (1)

Country Link
CN (1) CN102591699B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325496A (zh) * 2018-09-30 2019-02-12 武汉斗鱼网络科技有限公司 基于字符去除的弹幕校验方法、装置、终端及存储介质
CN110414651A (zh) * 2019-07-03 2019-11-05 阿里巴巴集团控股有限公司 调试智能卡的方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021652A1 (en) * 2003-07-25 2005-01-27 Sun Microsystems, Inc. Synchronous collaborative shell integrated instant messaging
CN101013464A (zh) * 2007-01-24 2007-08-08 北京飞天诚信科技有限公司 一种主机与智能卡信息交互的方法
CN101719054A (zh) * 2009-12-24 2010-06-02 北京飞天诚信科技有限公司 一种实现多卡槽访问的方法和装置
CN101876937A (zh) * 2009-11-11 2010-11-03 北京飞天诚信科技有限公司 一种模拟智能卡信息交互的方法
CN101986740A (zh) * 2010-09-14 2011-03-16 中国联合网络通信集团有限公司 一种java卡
CN102023886A (zh) * 2010-12-27 2011-04-20 北京像素软件科技股份有限公司 一种对软件中的数据进行资源差异处理的方法

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050021652A1 (en) * 2003-07-25 2005-01-27 Sun Microsystems, Inc. Synchronous collaborative shell integrated instant messaging
CN101013464A (zh) * 2007-01-24 2007-08-08 北京飞天诚信科技有限公司 一种主机与智能卡信息交互的方法
CN101876937A (zh) * 2009-11-11 2010-11-03 北京飞天诚信科技有限公司 一种模拟智能卡信息交互的方法
CN101719054A (zh) * 2009-12-24 2010-06-02 北京飞天诚信科技有限公司 一种实现多卡槽访问的方法和装置
CN101986740A (zh) * 2010-09-14 2011-03-16 中国联合网络通信集团有限公司 一种java卡
CN102023886A (zh) * 2010-12-27 2011-04-20 北京像素软件科技股份有限公司 一种对软件中的数据进行资源差异处理的方法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109325496A (zh) * 2018-09-30 2019-02-12 武汉斗鱼网络科技有限公司 基于字符去除的弹幕校验方法、装置、终端及存储介质
CN110414651A (zh) * 2019-07-03 2019-11-05 阿里巴巴集团控股有限公司 调试智能卡的方法及装置
CN110414651B (zh) * 2019-07-03 2023-01-17 创新先进技术有限公司 调试智能卡的方法及装置

Also Published As

Publication number Publication date
CN102591699B (zh) 2014-10-29

Similar Documents

Publication Publication Date Title
US9230123B2 (en) Apparatus for tamper protection of application code based on self modification and method thereof
US7783046B1 (en) Probabilistic cryptographic key identification with deterministic result
CN108197485B (zh) 终端数据加密方法和系统、终端数据解密方法和系统
CN111475824B (zh) 数据访问方法、装置、设备和存储介质
CN104765999A (zh) 一种对用户资源信息进行处理的方法、终端及服务器
CN106411517B (zh) 一种密码重置方法及装置
CN105101169A (zh) 可信执行环境处理信息的方法、装置、终端及sim卡
CN108270561B (zh) 数据发送方法及装置、密钥索引的生成方法及装置
CN111475543A (zh) 一种模糊搜索方法、装置、计算机设备及存储介质
CN104978542B (zh) 安全存储数据和访问数据的方法及系统
CN102591699B (zh) 一种转换命令模式的方法及装置
CN105224541A (zh) 数据的唯一性控制方法、信息存储方法及装置
CN113014387A (zh) 基于硬件加密机的多维加密接口的改进方法及加密装置
CN109088733B (zh) 一种智能卡应用扩展的实现方法及装置
CN110365468A (zh) 匿名化处理方法、装置、设备及存储介质
CN112257046A (zh) 一种用软件库实现可信数字身份解密和验签的方法、系统和设备
CN107145342A (zh) 应用的渠道信息的处理方法和装置
CN106503529A (zh) 一种基于指纹的云存储系统
CN101841353B (zh) 一种通过加密狗进行数据加密的方法及设备
CN114915405A (zh) 一种基于OpenSSL的国密算法硬件加速方法
CN107645382A (zh) 一种身份标识设备及其工作方法
CN101790005B (zh) 增值业务处理方法和系统及综合业务平台设备
CN112580061B (zh) 一种量子加解密应用接口的调用方法及相关设备
CN113420313A (zh) 程序安全运行、加密方法及其装置、设备、介质
CN101287218A (zh) 对终端的机要数据进行修改的方法、装置及系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant