本发明涉及智能卡技术领域,具体涉及一种应用于智能卡的文件处理方法及装置。
背景技术:
相关技术中智能卡采用如下方法生成以及管理文件:
1)采用应用协议数据单元(APDU,Application Protocol data unit)命令中的子文件数量预先申请空间,子文件采用链表的管理方式进行隶属关系的管理、增加和删除的功能。
2)智能卡文件系统中包含主文件(MF,Master File)、专用文件(DF,Dedicated File)和基本文件(EF,Elementary File),DF下的直接子DF通过单向DF链表连接起来,DF下的直接子EF通过单向EF链表连接起来。
相关技术的上述方案存在如下缺陷:
智能卡的文件系统采用链表方式,每次查找文件都必须从头开始执行读操作,处理效率低;而且,文件删除后存储空间无法回收再利用,造成了存储空间的浪费。
技术实现要素:
为了解决上述技术问题,本发明实施例提供了一种应用于智能卡的文件处理方法及装置。
本发明实施例提供了:
一种文件处理方法,应用于智能卡,包括:
根据创建文件命令,查找待创建的基本文件EF对应的专用文件DF;
基于哈希算法确定所述EF的存放位置;
根据所述存放位置,将所述EF创建在对应所述DF的存储空间内。
其中,所述基于哈希算法确定所述EF的存放位置,包括:
根据所述EF的文件名采用哈希算法得到位置标识;
对应所述DF的存储空间中所述位置标识对应的位置为空时,将所述位置标识对应的位置确定为所述EF的存放位置。
其中,所述基于哈希算法确定所述EF的存放位置,还包括:对应所述DF的存储空间中所述位置标识对应的位置已占用时,从所述位置标识对应的位置向后查找,将所述向后查找到的第一个为空的位置确定为所述EF的存放位置。
其中,根据所述存放位置,将所述EF创建在对应所述DF的存储空间内,包括:将所述EF的文件头写在对应所述DF的存储空间内的所述存放位置上。
其中,所述查找待创建的EF对应的DF之前,还包括:在创建所述DF时为所述DF分配存储空间,更新文件分配表FAT中对应所述DF的存储空间分配状态为已分配。
其中,还包括:删除所述DF后,更新所述FAT中对应所述DF的存储空间分配状态为未分配,以回收对应所述DF的存储空间。
一种文件处理装置,应用于智能卡,包括:
查找模块,用于根据创建文件命令,查找待创建的基本文件EF对应的专用文件DF;
确定模块,用于基于哈希算法确定所述EF的存放位置;
创建模块,用于根据所述存放位置将所述EF创建在对应所述DF的存储空间内。
其中,所述确定模块,具体用于:根据所述EF的文件名采用哈希算法得到位置标识;在对应所述DF的存储空间中所述位置标识对应的位置为空时,将所述位置标识对应的位置确定为所述EF的存放位置。
其中,所述确定模块,还用于在对应所述DF的存储空间中所述位置标识对应的位置已占用时,从所述位置标识对应的位置向后查找,将所述向后查找到的第一个为空的位置确定为所述EF的存放位置。
其中,所述创建模块,具体用于将所述EF的文件头写在对应所述DF的存储空间内的所述存放位置上。
其中,还包括:分配模块,用于在创建所述DF时为所述DF分配存储空间,更新文件分配表FAT中对应所述DF的存储空间分配状态为已分配。
其中,所述分配模块,还用于在删除所述DF后更新所述FAT中对应所述DF的存储空间分配状态为未分配,以回收对应所述DF的存储空间。
一种文件处理装置,包括处理器和存储器,所述文件处理装置应用于智能卡,所述存储器存储有计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现如下方法:
根据创建文件命令,查找待创建的基本文件EF对应的专用文件DF;
基于哈希算法确定所述EF的存放位置;
根据所述存放位置,将所述EF创建在对应所述DF的存储空间内。
本发明实施例中应用于智能卡的文件处理方法及装置,采用分层和哈希(hash)计算相结合的方式,将同一目录下的文件创建到存储空间的指定位置,如此,可根据文件的位置直接定位、查找、读取相应文件,实现了智能卡中文件的快速查找,提高了智能卡的文件处理效率。
此外,本发明实施例还采用了FAT表管理存储空间的分配状态,一方面可以在当前目录的空间不够时通过FAT表进行空间扩展,另一方面能够对删除的文件进行空间回收再利用,既能够避免因空间不足而无法创建文件,又提升了智能卡存储空间的利用率。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在说明书、权利要求书以及附图中所特别指出的结构来实现和获得。
附图说明
附图用来提供对本发明技术方案的进一步理解,并且构成说明书的一部分,与本申请的实施例一起用于解释本发明的技术方案,并不构成对本发明技术方案的限制。
图1为本发明实施例中应用于智能卡的文件处理方法流程示意图;
图2为本发明实施例中文件存储的示例图;
图3为本发明实施例中子文件存放的示例图;
图4为本发明实施例中的FAT表示例图;
图5为本发明实施例中应用于智能卡的文件处理装置的组成结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下文中将结合附图对本发明的实施例进行详细说明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互任意组合。
在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行。并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
实施例一
如图1所示,本申请提供一种应用于智能卡的文件管理方法,包括:
步骤101,根据创建文件命令,查找待创建的EF对应的DF;
步骤102,基于哈希算法确定所述EF的存放位置;
步骤103,根据所述存放位置,将所述EF创建在对应所述DF的存储空间内。
本申请中,采用分层和哈希(hash)计算相结合的方式,将同一目录下的文件创建到存储空间的指定位置,如此,可根据文件的位置直接定位、查找、读取相应文件,实现了智能卡中文件的快速查找,提高了智能卡的文件处理效率。
在一些实现方式中,步骤102中可通过如下方式确定存放位置:根据所述EF的文件名采用哈希算法得到位置标识;对应所述DF的存储空间中所述位置标识对应的位置为空时,将所述位置标识对应的位置确定为所述EF的存放位置。如此,便于将EF直接创建在相应存储空间的指定位置。
实际应用中,对应所述DF的存储空间中所述位置标识对应的位置已占用时,可以从所述位置标识对应的位置向后查找,将所述向后查找到的第一个为空的位置确定为所述EF的存放位置。当然,还可以将所述向后查找到的第N个为空的位置确定为所述EF的存放位置,其中,N为预定位数,N可以为不小于1的整数。如此,便于将EF存放在相应存储空间的指定位置,在定位、查找或读取所述EF时可以直接其位置标识确定其位置。
实际应用中,步骤103中根据所述存放位置,将所述EF创建在对应所述DF的存储空间内,可以包括:将所述EF的文件头写在对应所述DF的存储空间内的所述存放位置上。EF的文件头指定EF的文件体,在需要读取EF中的数据时可以根据EF的存放位置直接定位到EF的文件头,再根据EF的文件头找到EF的文件体,从EF的文件体中读取数据。
在一些实现方式中,本申请中在步骤101之前还可以包括:在创建所述DF时为所述DF分配存储空间,更新文件分配表(FAT)中对应所述DF的存储空间分配状态为已分配。如此,便于通过FAT管理智能卡中存储空间的分配状态,以合理有效的利用智能卡中的存储空间。
在一些实现方式中,本申请的上述方法还可包括:在删除所述DF后,更新所述FAT中对应所述DF的存储空间分配状态为未分配,以回收对应所述DF的存储空间。实际应用中,智能卡在接收到删除DF的命令后,根据所述命令中的DF标识将相应的DF删除,释放对应该DF的存储空间,并更新FAT表中相应存储空间的分配状态,如此,可实现智能卡中存储空间的回收再利用,在后续创建的文件超出了预设的存储空间容量时可使用回收的存储空间处理相应文件,不仅能够避免智能卡的空间浪费,而且能够解决智能卡的使用受限、存储空间利用率低的问题,有效提高了智能卡中存储空间的利用率。
如图2所示,为本申请的文件存储示例,其中,智能卡接收到创建文件命令后开始创建文件,文件的创建采用分层路径的方式,将同一个文件下的子文件放到已分配的连续存储空间内。图2中,MF为根目录,有且仅有一个,是智能卡中整个文件系统的入口;DF的文件体是内部所有子文件,子文件包括子DF和子EF,DF的作用相当于计算机系统中的目录或文件夹;EF的文件体是各种应用所需的数据元,也就是说,EF用来存储数据。如图2所示,在MF的文件体区存储有EF1、EF2、以及DDF1,其中,EF1文件头、EF2文件头、目录DF(DDF,Directory DF)1文件头存放在MF文件体区,EF1文件头指向EF1文件体,EF2文件头指向EF12文件体,DDF1文件头指向DDF1文件体,DDF1文件体下有三个文件EF3、EF4以及ADF1,本申请中,DDF1有其专属的存储空间,EF3、EF4以及ADF1的文件头存放在专属DDF1的存储空间中,ADF1文件头指向一个目录文件(Directory File),该目录文件中存放指定应用的数据。
本申请中,子文件的位置采用哈希算法来确定,从而在查找、定位子文件时可跳过前面的文件,快速找到文件。例如,对于图2所示的文件系统示例中,DDF1下的EF3、EF4以及ADF1分别采用哈希算法来确定其存放位置,再根据该存放放置分别将EF3、EF4以及ADF1存储在专属DDF1的存储空间中的相应位置处。
本申请中,使用哈希算法按确定子文件位置的方式可以是:将子文件的文件名取余,从余数开始存放或者开始查找,如文件为2f01,模为6,则余为3,那么2f01就放到位置标识(例如,可以是相应位置的下标)为3的位置,如果位置标识为3的位置已经被占用,则向后查找并放到第一个空位置上。
如图3所示,为使用哈希算法按确定子文件位置的示例。该示例中,在一个专属于DF的存储空间中需要存放五个子文件,这五个子文件的文件名分别为:2f01、2f02、2f03、2f04、2f07,模为6,那么这五个子文件对应的位置标识分别通过如下方式得到:
2f01%6=3;
2f02%6=4;
2f03%6=5;
2f04%6=0;
2f07%6=3。
存放时,将子文件2f01的文件头放在位置标识为3的位置,将子文件2f02的文件头放在位置标识为4的位置,将子文件2f03的文件头放在位置标识为5的位置,将子文件2f04的文件头放在位置标识为0的位置,由于子文件2f07的位置标识3对应的位置已被子文件2f01占用,则从位置标识为3的位置开始向后查找,找到第一空闲的位置(位置标识为6的位置)用来放置子文件2f07的文件头。其中,每个位置用于存放相应子文件的文件头,每个位置的大小为所存放的子文件文件头的大小。
本申请中,采用了分层路径和哈希算法来存储子文件,将同一目录下的子文件创建到存储空间的指定位置,查找子文件时可以从基于哈希算法确定的位置开始,大大提高了查找速度,实现了智能卡的快速查找文件功能。
本申请中,为每个DF分配存储空间之后,还同时更新FAT表,该FAT用于记录每页存储空间的分配情况。实际应用中,MF下创建的每个文件都先申请一块连续存储空间,该连续存储空间可以是一页,也可以是连续页,当然还可以是不连续的多页。在FAT表中记录有每个文件及其对应的存储空间页信息。实际应用中,可以在FAT表中将每个文件及其对应的存储空间页信息存储在块中,每个块记录一个文件的存储空间页信息。如图4所示,为FAT表的示例,块1中的存储空间页信息包括页1、页2、页3和页4,块1对应一个MF下的DF1,表示页1、页2、页3和页4对应的连续四页存储空间已分配给DF1,块2中的存储空间页信息包括页5、页6、页7和页8,块2对应一个MF下的DF2,表示页5、页6、页7和页8对应的连续四页存储空间已分配给DF2。对于未分配的存储空间,在FAT表中可以不记录其页信息或者将其标识为未分配。
本申请中,在MF下的文件被删除后,还可以更新FAT表中相应存储空间的分配状态(例如,可以将该文件的块删除)。如此,可以在文件被删除后,将该文件的存储空间回收回来,以便再将相应的存储空间分配给其他新创建的文件。例如,对于图4的示例,如果DF1被删除,那么可以将其对应的块1删除或将块1中记录的存储空间页信息删除,相当于将其对应的存储空间分配状态更新为未分配,如此,页1、页2、页3和页4就被回收回来,便于将页1、页2、页3和页4对应的存储空间分配给其他文件进行再利用。例如,创建DF3时,DF3申请了7页存储空间,则可以将页1、页2、页3、页4、页9、页10、页11对应的非连续7页存储空间分配给DF3,同时在FAT表中设置用于记录DF3存储空间页信息的块3,块3中记录有如下存储空间页信息:页1、页2、页3、页4、页9、页10、页11。
本申请中,采用了FAT表管理存储空间的分配状态,一方面可以在当前目录的空间不够时通过FAT表进行空间扩展,另一方面能够对删除的文件进行空间回收再利用,既能够避免因空间不足而无法创建文件,又提升了智能卡存储空间的利用率。
实施例二
如图5所示,本申请还提供一种应用于智能卡的文件处理装置,可以包括:
查找模块51,用于根据创建文件命令,查找待创建的EF对应的DF;
确定模块52,用于基于哈希算法确定所述EF的存放位置;
创建模块53,用于根据所述存放位置将所述EF创建在对应所述DF的存储空间内。
其中,所述确定模块52,具体可用于:根据所述EF的文件名采用哈希算法得到位置标识;在对应所述DF的存储空间中所述位置标识对应的位置为空时,将所述位置标识对应的位置确定为所述EF的存放位置。
其中,所述确定模块52,还可用于在对应所述DF的存储空间中所述位置标识对应的位置已占用时,从所述位置标识对应的位置向后查找,将所述向后查找到的第一个为空的位置确定为所述EF的存放位置。
其中,所述创建模块53,具体可用于将所述EF的文件头写在对应所述DF的存储空间内的所述存放位置上。
其中,上述文件处理装置还可包括:分配模块54,用于在创建所述DF时为所述DF分配存储空间,更新文件分配表FAT中对应所述DF的存储空间分配状态为已分配。
其中,所述分配模块54,还可用于在删除所述DF后更新所述FAT中对应所述DF的存储空间分配状态为未分配,以回收对应所述DF的存储空间。
本实施例的上述文件处理装置可配置于智能卡中实现实施例一所述方法,具体细节如实施例一所述,不再赘述。
实施例三
本申请还提供另一种文件处理装置,包括处理器和存储器,所述文件处理装置应用于智能卡,所述存储器存储有计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现如下方法:
根据创建文件命令,查找待创建的基本文件EF对应的专用文件DF;
基于哈希算法确定所述EF的存放位置;
根据所述存放位置,将所述EF创建在对应所述DF的存储空间内。
本实施例中的文件处理装置可实现实施例一所述方法,具体细节如实施例一所述,不再赘述。
此外,本申请实施例还提供一种计算机可读存储介质,存储有计算机可执行指令,所述计算机可执行指令被执行时实现上述应用于智能卡的文件处理方法。
可选地,在本实施例中,上述存储介质可以包括但不限于:只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)等各种可以存储程序代码且能够应用于智能卡的介质。
可选地,在本实施例中,智能卡中处理器可根据存储介质中已存储的程序代码执行上述实施例的方法步骤。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
本领域普通技术人员可以理解上述方法中的全部或部分步骤可通过程序来指令相关硬件(例如处理器)完成,所述程序可以存储于计算机可读存储介质中,如只读存储器、磁盘或光盘等。可选地,上述实施例的全部或部分步骤也可以使用一个或多个集成电路来实现。相应地,上述实施例中的各模块/单元可以采用硬件的形式实现,例如通过集成电路来实现其相应功能,也可以采用软件功能模块的形式实现,例如通过处理器执行存储于存储器中的程序/指令来实现其相应功能。本申请不限制于任何特定形式的硬件和软件的结合。
以上显示和描述了本申请的基本原理和主要特征和本申请的优点。本申请不受上述实施例的限制,上述实施例和说明书中描述的只是说明本申请的原理,在不脱离本申请精神和范围的前提下,本申请还会有各种变化和改进,这些变化和改进都落入要求保护的本申请范围内。