一种基于Java智能卡下载文件的方法及装置的制作方法

文档序号:6356754阅读:163来源:国知局
专利名称:一种基于Java智能卡下载文件的方法及装置的制作方法
技术领域
本发明涉及智能卡领域,尤其涉及一种基于Java智能卡下载文件的方法及装置。
背景技术
Java智能卡是可以运行Java程序代码的智能卡,在智能卡中不能直接存储Java 源代码或class类文件,在将Java智能卡类导入一个Java智能卡设备之前,需要通过转换装置将类文件转换为标准的转化小应用程序(Converted Applet, CAP)文件。CAP文件的格式由Java智能卡虚拟机规范统一定义,一个CAP文件包括多个组件,如Header组件、 Directory组件、Applet组件、Import组件、Class组件、Method组件等12个组件,而每个组件又由多个域组成。目前,在将CAP文件下载到Java智能卡中时,每当Java智能卡接收到一个组件内的一个域时,即开始转换流程,将相应的CAP文件数据转换为Java智能卡要求的存储结构。 针对整个CAP文件的下载处理过程,该处理方法存在以下缺陷对于组件中的每个域都对应一个独立的下载处理过程,这就需要在不同域的下载处理过程之间频繁进行切换,这使得产生的额外时间开销较大,降低了 CAP文件的下载速度。

发明内容
本发明提供一种基于Java智能卡下载文件的方法及装置,用以提高Java智能卡下载CAP文件时的效率。本发明实施例提供的具体技术方案如下一种基于Java智能卡下载文件的方法,包括根据存储的按照转化小应用程序CAP文件结构设定的动作单元类型及顺序,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量;按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中。一种基于Java智能卡下载文件的装置,包括第一处理单元,用于根据存储的按照转化小应用程序CAP文件结构设定的动作单元类型及顺序,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量;第二处理单元,用于按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中。基于上述技术方案,本发明实施例中,按照待下载文件结构设置动作单元类型、动作单元的顺序以及动作单元对应的下载数据量相关信息,并存储在Java智能卡中,在下载数据时,根据存储的动作单元类型以及动作单元顺序,获取存储的该动作单元对应的下载数据量相关信息并确定下载数据量,按照该下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中,从而能够将待下载的文件数据,按照动作单元进行划分后,分别下载至Java智能卡中,避免了针对数据文件中的每个域都启动下载处理过程,从而提高了下载CAP文件的效率,从时间上来讲,提高了 CAP文件的下载速度,而从空间上来讲,能够充分利用Java智能卡有限的缓存资源。


图1为本发明实施例中Java智能卡下载文件的系统架构图;图2为本发明实施例中基于Java智能卡下载文件的装置结构图;图3为本发明实施例中基于Java智能卡下载文件的方法流程图。
具体实施例方式为了提高Java智能卡下载CAP文件时的效率,本发明实施例中提供了一种基于 Java智能卡下载文件的方法及装置,能够有效地提高下载文件的速度。该方法为根据存储的按照转化小应用程序CAP文件结构设定的动作单元类型及顺序,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量,按照下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中。本发明实施例所提供的文件下载方法并不局限于基于Java智能卡进行下载的情况,也可以应用于其他文件下载的情况,如基于计算机进行文件下载,本领域技术人员可以根据本发明实施例所提供的方法扩展到其它应用,对于除Java智能卡以外的应用情况,本发明也将其包括在内。本发明实施例中,需要下载的文件可以是CAP文件,也可以是其它数据量较大的数据文件,本发明实施例中,仅以CAP文件为例进行说明。下面结合附图对本发明优选的实施方式进行详细说明。如附图1所示,本发明实施例中,基于Java Card下载文件的系统主要包括卡片接受设备10和Java Card设备11,其中,卡片接受设备10,用于向Java Card设备11下发相应的应用程序协议数据单元 (APDU)命令,在APDU缓存中携带待下载的文件数据;Java Card设备11,用于根据存储的按照转化小应用程序CAP文件结构设定的动作单元类型及动作单元顺序,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量,按照该下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中。如附图2所示,本发明实施例中,Java智能卡设备11中包含的基于Java智能卡下载文件的装置主要包括以下处理单元第一处理单元111,用于根据存储的按照转化小应用程序CAP文件结构设定的动作单元类型及顺序,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量;第二处理单元112,用于按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中。基于上述系统架构,如附图3所示,本发明实施例中,基于Java智能卡下载文件的详细方法流程如下
步骤301 根据存储的按照转化小应用程序CAP文件结构设定的动作单元类型及动作单元顺序,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量。其中,卡片接受设备通过将待下载的CAP文件数据放置在APDU缓存中,再将携带待下载文件数据的APDU下发给Java智能卡设备。本发明实施例中,由于CAP文件的结构固定,每个CAP文件包含12个组件,每个组件中又包含特定的域,设计人员可以根据CAP文件的结构将整个CAP文件数据划分为指定数目的动作单元,例如,将CAP文件划分为53个动作单元。动作单元是指下载CAP文件时的处理单位,其以Java智能卡的易失性存储区为载体,以符合Java智能卡规范的CAP文件数据为内容。较佳地,设计人员在将整个CAP文件数据划分为指定数目的动作单元时,设定动作单元类型、动作单元的顺序,以及动作单元对应的下载数据量相关信息。其中,在针对整个CAP文件数据划分动作单元时,根据CAP文件的组织结构(如,CAP文件包含的域)设定动作单元类型和动作单元的顺序,以及动作单元对应的下载数据量相关信息。在下载CAP文件之前,将设定的动作单元类型、动作单元的顺序,以及动作单元对应的下载数据量相关信息存储在Java智能卡中。较佳地,可以分别针对每个动作单元设定不同的标识,则动作单元的顺序可以表征为动作单元的标识的顺序。其中,动作单元的下载数据量相关信息,用于确定动作单元的下载数据量。获取存储的动作单元对应的下载数据量相关信息,并确定相应的下载数据量时,具体为获取存储的动作单元对应的下载数据量相关信息,将该下载数据量相关信息直接作为相应的下载数据量;或者,获取存储的动作单元对应的下载数据量相关信息,该下载数据量相关信息为动作单元对应的下载数据量的位置信息,根据该下载数据量的位置信息获取相应的下载数据量。本发明实施例中,根据CAP文件数据下载至Java智能卡时采用的不同处理方式, 将CAP文件数据对应的动作单元分为静态动作单元、动态动作单元、透明动作单元和循环动作单元4个基本类型,在实际应用中,可以对上述基本类型进行组合,例如,可以组合为非循环静态动作单元、非循环动态动作单元、循环静态动作单元、循环动态动作单元、透明动作单元等,本发明实施例中,动作单元的类型并不限于上述几种,本领域技术人员可以对基本类型的动作单元进行组合得到其它类型的动作单元,本发明也将其包括在内。本发明实施例中,设计人员根据动作单元对应的CAP文件数据转换为Java智能卡存储结构时的处理方式,设定动作单元的类型。根据动作单元对应的CAP文件数据转换为 Java智能卡存储结构时的不同处理方式,依次设计每个动作单元的类型时,具体为如果动作单元对应的文件数据为循环结构,则将该动作单元设为循环动作单元,实际应用中,如果CAP文件中的某段循环结构的文件数据大于动作单元缓冲区的大小时,则将该循环结构的文件数据分为两部分,每部分对应一个动作单元,并将第二动作单元设定为循环动作单元,例如,CAP文件数据中循环次数为count的循环体数据;如果动作单元对应的文件数据可以采用原有形式下载至Java智能卡,将该对应单元设为透明动作单元,例如,CAP文件数据中的name变量对应的数据;如果动作单元对应的文件数据的长度可变时,将该动作单元设为动态动作单元,例如,CAP文件数据中AID变量对应的文件数据,该文件数据的长度取
6决于AID_Length变量的取值,与AID变量对应的文件数据所对应的动作单元为动态动作单元;如果动作单元对应的文件数据的长度固定不变时,将该动作单元设为静态动作单元,例如,CAP文件初始部分的文件数据长度固定不变,将该文件数据对应的动作单元设为静态动作单元。本发明实施例中,若动作单元类型为静态动作单元,则将获取的该动作单元对应的下载数据量相关信息直接作为该动作单元下载数据量;若动作单元类型为非静态动作单元,则获取的下载数据量相关信息为该动作单元对应的下载数据量的位置信息,根据该下载数据量的位置信息获取该动作单元的下载数据量。其中,根据下载数据量的位置信息获取动作单元的下载数据量时,基于下载的与上一个动作单元对应的数据,确定下载数据量的位置信息对应的数据,获取该数据并作为当前处理的动作单元的下载数据量。步骤302 按照下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中。较佳地,按照下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据时,若确定动作单元对应的下载数据量大于APDU缓存中包含的数据量时,将APDU缓存中的数据下载至缓冲区中,并从下一条APDU缓存中下载所述动作单元对应的其余数据至缓冲区,并将缓冲区中的数据存储至Java智能卡中。本发明实施例中,在将动作单元对应的文件数据保存至Java智能卡之前,按照 Java智能卡规范将该文件数据转换为符合具体Java智能卡产品存储要求的形式,再按照该形式保存至Java智能卡中。较佳地,动作单元缓冲区的大小为16个字节,在Java智能卡中的易失性存储区有限,或采用特殊的CAP文件数据处理方式时,动作单元缓冲区的大小可以小于16字节;在 Java智能卡的易失性存储区足够大,动作单元缓冲区的大小可以大于16字节,但是,为了保证一个APDU命令至少对应一次下载过程,动作单元缓冲区的大小应限定为不大于1 字节(即APDU命令体大小的一半)。本发明实施例中,将动作单元缓冲区中的数据存储到Java智能卡之后,按照存储的动作单元的顺序,获取下一个动作单元的类型和下载数据量相关信息。例如,第一个动作单元(标识为1)的类型为静态动作单元,预设的下载数据量为13个字节,则从APDU缓存中下载13个字节大小的文件数据,并按照Java智能卡存储结构进行保存,然后按照存储的动作单元标识顺序获取第二个动作单元的标识为2,根据存储的信息可知,标识为2的动作单元的类型为动态动作单元,存储的下载数据量的位置信息为13,基于标识为1的动作单元对应的文件数据,从该文件数据中获取第13个字节位置的文件数据,并作为标识为2的动作单元的下载数据量。本发明实施例中,若动作单元类型为循环动作单元,按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据之前,获取存储的该动作单元的计数器数据位置信息,基于下载的与上一个动作单元对应的数据,确定所述计数器数据位置信息对应的数据,获取该数据并作为计数器的值。例如,在确定标识为5的动作单元类型为循环动作单元时,获取存储的计数器数据位置信息为6,基于下载的与标识4对应的文件数据,确定该文件数据中第6个字节位置 (即计数器数据位置信息确定的位置)对应的文件数据为2,获取数据2并作为标识为5的
7循环动作单元的计数器的值。在动作单元为循环动作单元时,判断循环动作单元的计数器是否为零值,若确定为非零值时,根据该动作单元对应的下载数据量,从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中,将所述计数器的值减1,保持动作单元的标识和下载数据量不变;若确定为零值时,按照存储的动作单元标识顺序,获取下一个动作单元的标识及类型。例如,确定存储的循环动作单元的计数器的值为2,存储的循环动作单元的下载数据量为5个字节,首先判断计数器为非零值,则从APDU缓存中下载5个字节的数据,并存储至Java智能卡中,将计数器减1,保持动作单元的标识和大小不变;进一步确定循环动作单元的计数器的值为1 (为非零值),则从APDU缓存中依次下载5个字节的数据,存储至Java 智能卡中,并将计数器减1,保持动作单元的标识和大小不变;进一步确定循环动作单元的计数器的值为零值时,获取下一个动作单元的标识和类型。本发明实施例中,设定静态动作单元、动态动作单元和循环动作单元的大小不大于动作单元缓冲区的大小;而透明动作单元的大小不受动作单元缓冲区大小的限制,例如, 可以是零到几千字节。本发明实施例中,按照待下载文件结构设置动作单元类型、动作单元的顺序以及动作单元对应的下载数据量相关信息,并存储在Java智能卡中,在下载数据时,根据存储的动作单元类型以及动作单元的顺序,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量,按照该下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中,从而能够将待下载的文件数据,按照动作单元分别下载至Java智能卡中,避免了针对数据文件中的每个域都启动下载处理过程,从而提高了下载CAP文件的效率,即从时间上提高了 CAP文件的速度,从空间上能够充分利用Java 智能卡有限的缓存资源。另外,对于组件中的每个域都对应一个独立的下载处理过程,这就需要在不同域的下载处理过程之间频繁进行切换,这使得产生的额外时间开销较大,同时由于各个组件域大小并不相同,甚至大小相差很大,从而不能充分利用Java智能卡的缓存资源,降低了对Java智能卡缓存资源的利用率。本发明通过将待下载的CAP文件数据对应至各个动作单元,每个动作单元对应一次下载处理过程,在每个下载处理过程中,除了完成控制所需的 RAM资源,所需额外资源取决于CAP文件数据下载至Java智能卡时的具体处理,因此,可以提高RAM资源的利用率。由于一个动作单元对应尽可能多的文件数据,从而将CAP文件数据以动作单元为单位进行下载,达到了批量下载数据的目的,从而提高CAP文件的下载速度。同时,由于组件每个域对应的下载处理过程所需的处理时间并不相同,对于某些域的下载处理过程所需的处理时间较短,甚至可能小于切换至另外一个域的下载处理过程所需的时间,而某些域的下载处理过程所需的时间较长,可能会超过预定的转换时间,从而导致CAP文件下载过程的不稳定。本发明实施例中,通过以动作单元为单位下载文件数据, 避免了单个下载处理过程的时间过长或过短,使得整个CAP文件数据的下载过程可以平稳进行,增强了系统的稳定性。并且,由于按照组件中的域进行下载的过程是公开和可以预知的,因此容易受到来自电信号分析的威胁或有针对性的镭射攻击,引入安全隐患。本发明实施例中,每个动作单元的类型和大小都是由设计者预先设定,具有一定的保密性,从而一定程度上提高了 Java智能卡的安全性。 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
权利要求
1.一种基于Java智能卡下载文件的方法,其特征在于,包括根据存储的按照转化小应用程序CAP文件结构设定的动作单元类型及顺序,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量;按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中。
2.如权利要求1所述的方法,其特征在于,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量,包括获取存储的动作单元对应的下载数据量相关信息,将该下载数据量相关信息直接作为相应的下载数据量;或者获取存储的动作单元对应的下载数据量相关信息,该下载数据量相关信息为所述动作单元对应的下载数据量的位置信息,根据该下载数据量的位置信息获取相应的下载数据量。
3.如权利要求2所述的方法,其特征在于,若动作单元类型为静态动作单元,则将获取的该动作单元对应的下载数据量相关信息直接作为该动作单元下载数据量;若动作单元类型为非静态动作单元,则获取的下载数据量相关信息为该动作单元对应的下载数据量的位置信息,根据该下载数据量的位置信息获取该动作单元的下载数据量。
4.如权利要求3所述的方法,其特征在于,根据下载数据量的位置信息获取该动作单元的下载数据量,包括基于下载的与上一个动作单元对应的数据,确定所述下载数据量的位置信息对应的数据,获取该数据并作为当前处理的动作单元的下载数据量。
5.如权利要求1-4任一项所述的方法,其特征在于,按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中,包括在确定动作单元对应的下载数据量大于APDU缓存中包含的数据量时,将APDU缓存中的数据下载至缓冲区中,并从下一条APDU缓存中下载所述动作单元对应的其余数据至缓冲区,并将缓冲区中的数据存储至Java智能卡中。
6.如权利要求5所述的方法,其特征在于,若动作单元类型为循环动作单元,按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据之前,包括获取存储的该动作单元的计数器数据位置信息,基于下载的与上一个动作单元对应的数据,确定所述计数器数据位置信息对应的数据,获取该数据并作为计数器的值。
7.如权利要求6所述的方法,其特征在于,若动作单元为循环动作单元,首先判断循环动作单元的计数器是否为零值,若确定为非零值时,根据该动作单元对应的下载数据量,从应用程序协议数据单元 APDU缓存中下载相应的数据,并存储至Java智能卡中,将所述计数器的值减1,保持动作单元的标识和下载数据量不变;若确定为零值时,按照存储的动作单元标识顺序,获取下一个动作单元的标识及类型。
8.一种基于Java智能卡下载文件的装置,其特征在于,包括第一处理单元,用于根据存储的按照转化小应用程序CAP文件结构设定的动作单元类型及顺序,获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量;第二处理单元,用于按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中。
9.如权利要求8所述的装置,其特征在于,所述第一处理单元获取存储的该动作单元对应的下载数据量相关信息,并确定相应的下载数据量,具体为获取存储的动作单元对应的下载数据量相关信息,将该下载数据量相关信息直接作为相应的下载数据量;或者获取存储的动作单元对应的下载数据量相关信息,该下载数据量相关信息为所述动作单元对应的下载数据量的位置信息,根据该下载数据量的位置信息获取相应的下载数据量。
10.如权利要求9所述的装置,其特征在于,若动作单元类型为静态动作单元,则第一处理单元将获取的该动作单元对应的下载数据量相关信息直接作为该动作单元下载数据量;若动作单元类型为非静态动作单元,则第一处理单元获取的下载数据量相关信息为该动作单元对应的下载数据量的位置信息,根据该下载数据量的位置信息获取该动作单元的下载数据量。
11.如权利要求10所述的装置,其特征在于,第一处理单元根据下载数据量的位置信息获取该动作单元的下载数据量,具体为基于下载的与上一个动作单元对应的数据,确定所述下载数据量的位置信息对应的数据,获取该数据并作为当前处理的动作单元的下载数据量。
12.如权利要求8-11任一项所述的装置,其特征在于,第二处理单元按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中,具体为在确定动作单元对应的下载数据量大于APDU缓存中包含的数据量时,将APDU缓存中的数据下载至缓冲区中,并从下一条APDU缓存中下载所述动作单元对应的其余数据至缓冲区,并将缓冲区中的数据存储至Java智能卡中。
13.如权利要求12所述的装置,其特征在于,若动作单元类型为循环动作单元,在第二处理单元按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据之前,获取存储的该动作单元的计数器数据位置信息,基于下载的与上一个动作单元对应的数据,确定所述计数器数据位置信息对应的数据,获取该数据并作为计数器的值。
14.如权利要求13所述的装置,其特征在于,若动作单元为循环动作单元,第一处理单元判断循环动作单元的计数器是否为零值,若确定为非零值时,第二处理单元根据该动作单元对应的下载数据量,从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中,将所述计数器的值减1, 保持动作单元的标识和下载数据量不变;若确定为零值时,按照存储的动作单元标识顺序,获取下一个动作单元的标识及类型。
全文摘要
本发明公开了一种基于Java智能卡下载文件的方法及装置,以提高下载CAP文件的效率。该方法为根据存储的按照转化小应用程序CAP文件结构设定的动作单元类型及顺序,获取存储的该动作单元对应的下载数据量相关信息,确定相应的下载数据量,按照所述下载数据量从应用程序协议数据单元APDU缓存中下载相应的数据,并存储至Java智能卡中。本发明同时公开了一种基于Java智能卡下载文件的装置。
文档编号G06F9/445GK102184374SQ20111007261
公开日2011年9月14日 申请日期2011年3月24日 优先权日2011年3月24日
发明者成秋良 申请人:北京握奇数据系统有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1