CN114879986B - 用于程序包下载解析的方法及装置、终端设备及存储介质 - Google Patents
用于程序包下载解析的方法及装置、终端设备及存储介质 Download PDFInfo
- Publication number
- CN114879986B CN114879986B CN202210819054.5A CN202210819054A CN114879986B CN 114879986 B CN114879986 B CN 114879986B CN 202210819054 A CN202210819054 A CN 202210819054A CN 114879986 B CN114879986 B CN 114879986B
- Authority
- CN
- China
- Prior art keywords
- component
- analyzing
- state machine
- state
- data
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0646—Horizontal data movement in storage systems, i.e. moving data in between storage devices or systems
- G06F3/0652—Erasing, e.g. deleting, data cleaning, moving of data to a wastebasket
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0679—Non-volatile semiconductor memory device, e.g. flash memory, one time programmable memory [OTP]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/42—Syntactic analysis
- G06F8/427—Parsing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/544—Buffers; Shared memory; Pipes
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Human Computer Interaction (AREA)
- Stored Programmes (AREA)
Abstract
本申请涉及智能卡技术领域,公开一种用于程序包下载解析的方法及装置、终端设备及存储介质,其中,所述方法包括:启动程序包下载;其中,程序包被划分为n个数据块block;下载程序包的第i个block,i=0,1,…,n‑1;对第i个block进行解析并存入预先申请的易失性存储器VM缓存空间;将缓存的第i个block写入非易失性存储器NVM进行保存;继续下载第i+1个block,进行循环处理。本方法可以缩短NFC SE所支持的卡的应用程序下载解析时间。
Description
技术领域
本申请涉及智能卡技术领域,例如涉及一种用于程序包下载解析的方法及装置、终端设备及存储介质。
背景技术
目前,NFC SE(Near Field Communication Secure Element,近场通信安全模块)所支持的卡应用种类众多,相关技术中应用程序下载解析时间过长,从而影响用户体验,需要缩短下载时间,以满足在指定时间内完成应用程序的下载解析。解析流程存在冗余的循环和缓存,导致NVM(Non-Volatile Memory,非易失性存储器)擦写次数较多,从而导致下载解析时间过长。
发明内容
为了对披露的实施例的一些方面有基本的理解,下面给出了简单的概括。所述概括不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围,而是作为后面的详细说明的序言。
本公开实施例提供了一种用于程序包下载解析的方法及装置、终端设备及存储介质,对于NFC SE所支持的卡的应用程序下载,可以缩短下载解析时间。
在一些实施例中,所述方法包括:启动程序包下载;其中,程序包被划分为n个数据块block;下载程序包的第i个block,i=0,1,…,n-1;对第i个block进行解析并存入预先申请的VM(Volatile Memory,易失性存储器)缓存空间;将缓存的第i个block写入NVM进行保存;继续下载第i+1个block,进行循环处理。
新增加缓存空间,对第i个block进行解析并存入预先申请的缓存空间,一次性申请NVM空间并写入对第i个block进行解析后的数据。因此,减少了在解析组件过程中对NVM的反复申请和擦写,也减少了解析各个组件并把组件写入NVM的次数,从而缩短了下载程序的解析和保存时间。
可选地,缓存空间用于缓存临时程序包表、已解析数据、待解析数据和数据模块个数信息。
新增的缓存空间缓存临时程序包表、已解析的数据、未收齐待解析数据以及数据模块个数信息。在缓存空间中一边下载数据,一边解析所下载的数据,提高数据解析效率。
可选地,对第i个block进行解析并存入缓存空间,包括:通过第一层状态机判断第i个block中当前待解析数据所属的类型,确定是否为下载指令的一级TLV(Tag LengthValue,标签及其长度和其值)中的LFD(Load File Data,下载文件数据)的V(Value,值);若是,则处理二级TLV的T(Tag,标签)和L(Length,长度),以及进入对二级TLV的V的解析;若不是,则进入对一级TLV的解析;通过第二层状态机对第i个block中的一级TLV进行解析,以及二级TLV的V进行解析;其中一级TLV包括DAP(Data Authentication Pattern,数据鉴定模式)、ICV(Initial Chaining Vector,初始链表向量)、LFD(Load File Data,明文下载文件数据)、CLFD(Ciphered Load File Data,密文下载文件数据);二级TLV为包组件。
采用两层状态机的控制方式,第一层状态机判断第i个block中当前待解析数据所属的类型,区分一级TLV和二级TLV。第二层状态机再对一级TLV进行解析和对二级TLV的V进行解析,从而在一个大循环中完成对一级TLV和二级TLV的解析,由此可以实现一边下载数据,一边解析数据。
可选地,通过第一层状态机判断第i个block中当前待解析数据所属的类型,确定是否为下载指令的一级TLV中的下载文件数据LFD的值V;若是,则处理二级TLV的标签T和长度L,以及进入对二级TLV的V的解析;若不是,则进入对一级TLV的解析,包括:在第一层状态机处于包初始状态下,对第i个block中不属于LFD的V的部分进行解析,当解析完成后将第一层状态机转换为组件初始状态;在第一层状态机处于组件初始状态下,对二级TLV,即组件的T和L进行解析,当解析完成后将第一层状态机状态转换为组件处理状态;在第一层状态机处于组件处理状态下,对当前二级TLV,即当前组件的V进行解析,当解析完成后,检查是否还有剩余的组件待解析,若有,则将第一层状态机转换为组件初始状态;若无,则整个包的解析完成。
通过第一层状态机对第i个block中的数据进行解析,对处于包初始状态、组件初始状态、组件处理状态的数据分别处理,从而实现对数据的分层控制。
可选地,通过第二层状态机对第i个block中的一级TLV进行解析,以及二级TLV的V进行解析,包括:对一级TLV进行解析:当第二层状态机处于解析T和L时,根据T切换到处理DAP、处理ICV、处理CLFD或处理LFD状态;当第二层状态机处于处理DAP时,校验DAP,完成后将第二层状态机切换到解析T和L的状态;当第二层状态机处于处理ICV时,初始化解密运算,完成后将第二层状态机切换到解析T和L的状态;当第二层状态机处于处理CLFD时,初始化解密运算,解密数据,计算哈希值,完成后将第一层状态机切换到组件初始状态;当第二层状态机处于处理LFD时,计算哈希值,完成后将第一层状态机切换到组件初始状态;对二级TLV的V进行解析:对第i个block中的多个组件的V进行解析;其中,所述多个组件包括头(Header)组件、目录(Directory)组件、导入(Import)组件、小应用程序(Applet)组件、类(Class)组件、导出(Export)组件、方法(Method)组件、静态域(Static field)组件、常量池(Constant pool)组件、引用定位(Reference location)组件;在第二层状态机处于解析第n个组件参数的L的状态下,缓存组件参数字节数,完成后将第二层状态机切换到解析第n个组件参数的V的状态;在第二层状态机处于解析第n个组件参数的V的状态下,解析该参数并将解析后的结果保存至缓存空间,完成后判断当前组件是否还有剩余待解析数据,若无,将第一层状态机切换到组件初始状态;若有,则判断是否还有需要解析的参数,若有,将第二层状态机切换到解析第n+1个组件参数的L的状态;若无,将第二层状态机切换到跳过不解析的状态;在第二层状态机处于跳过不解析的状态下,不做解析直接将数据保存至缓存空间,完成后判断当前组件是否还有剩余待解析数据,若无,将第一层状态机切换到组件初始状态;若有,保持当前状态。
通过第二层状态机对第i个block中的各个组件进行解析,把组件中的参数以及所解析的组件数据保存至缓存空间,实现一边解析一边缓存。从而,通过两层状态机对各种状态的控制,提高下载解析的效率。
可选地,在第二层状态机处于解析第n个组件参数的V的状态下,解析该参数并将解析后的结果保存至缓存空间,还包括:在解析Directory组件时,累加Import组件、Applet组件、Class组件、Export组件、Method组件、Static field组件、Constant pool组件的大小,一次性申请一整块NVM空间,并记录NVM空间的范围。
通过解析Directory组件,得到各个组件的大小,累加各个组件的大小,一次性申请一整块NVM空间,提高了申请NVM空间的效率。
可选地,一次性申请一整块NVM空间,并记录NVM空间的范围,还包括:在记录NVM空间范围内,只在写头尾页时进行掉电保护。
对写入NVM的头尾页进行掉电保护,在提高存储效率的同时,保证了数据的安全性和完整性。
可选地,将缓存的第i个block写入NVM进行保存,包括:当第i个block中的某个组件还未全部解析,并且,缓存空间已满的情况下,将缓存空间中所保存的数据写入NVM;当第i个block中的某个组件已全部解析的情况下,将缓存空间中所保存的数据写入NVM。
将缓存数据一次性写入NVM,从而提升了写入NVM空间的效率。
在一些实施例中,所述装置包括:处理器和存储有程序指令的存储器,所述处理器被配置为在运行所述程序指令时,执行上述用于程序包下载解析的方法。
在一些实施例中,所述终端设备,包括本申请的用于程序包下载解析的装置。
在一些实施例中,所述存储介质包括:存储有程序指令,所述程序指令在运行时,执行上述用于程序包下载解析的方法。
本公开实施例提供的用于程序包下载解析的方法、装置和存储介质,可以实现以下技术效果:
新增加缓存空间,对第i个block进行解析并存入预先申请的缓存空间。对所缓存的数据一次性申请NVM空间并写入解析后的缓存数据,避免反复擦写NVM,从而提高了下载解析效率。
以上的总体描述和下文中的描述仅是示例性和解释性的,不用于限制本申请。
附图说明
一个或多个实施例通过与之对应的附图进行示例性说明,这些示例性说明和附图并不构成对实施例的限定,附图中具有相同参考数字标号的元件示为类似的元件,附图不构成比例限制,并且其中:
图1是相关技术中数据块下载流程图;
图2是本公开实施例提供的一个用于程序包下载解析方法的流程图;
图3-1是本公开实施例提供的一个用于程序包下载解析方法的第一层状态机流程图;
图3-2是本公开实施例提供的一个用于程序包下载解析方法的第二层状态机Header组件处理流程图;
图4是本公开实施例提供的一个用于程序包下载解析方法的第二层状态机Directory组件处理流程图;
图5是本公开实施例提供的一个用于程序包下载解析方法的部分组件实施效果表;
图6是本公开实施例提供的一个用于程序包下载解析的装置的示意图。
具体实施方式
为了能够更加详尽地了解本公开实施例的特点与技术内容,下面结合附图对本公开实施例的实现进行详细阐述,所附附图仅供参考说明之用,并非用来限定本公开实施例。在以下的技术描述中,为方便解释起见,通过多个细节以提供对所披露实施例的充分理解。然而,在没有这些细节的情况下,一个或多个实施例仍然可以实施。在其它情况下,为简化附图,熟知的结构和装置可以简化展示。
本公开实施例的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本公开实施例的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含。
除非另有说明,术语“多个”表示两个或两个以上。
本公开实施例中,字符“/”表示前后对象是一种“或”的关系。例如,A/B表示:A或B。
术语“对应”可以指的是一种关联关系或绑定关系,A与B相对应指的是A与B之间是一种关联关系或绑定关系。
结合图1,相关技术中数据块下载流程图,包括:
S01,启动程序包下载;其中,程序包被划分为n个数据块block。
S02,判断是否i<n,如果满足条件则执行S03,如果不满足条件则结束。
S03,校验并执行数据鉴定模式DAP。
S04,校验并执行下载指令。
S05,对第i个block中的组件进行解析并写入NVM进行保存。
S06,i增加1,返回执行S02。
执行DAP以及校验并执行下载指令的处理步骤,与各个组件解析处理步骤相分离,从而无法有效控制一边下载程序包一边解析。另外,各个组件解析后直接存入NVM而不是保存到缓存空间,以及,每条信息写入NVM时都涉及先收齐数据再解析,从而对NVM进行了两次擦写,导致下载解析时间过长。
结合图2所示,本公开实施例提供的一个用于程序包下载解析方法的流程图,包括:
S11,下载程序启动程序包下载;其中,程序包被划分为n个数据块block。
S12,下载程序判断是否i<n,如果满足条件则执行S13,如果不满足条件则结束。
S13,下载程序对第i个block进行解析并存入预先申请的缓存空间。
S14,下载程序将缓存的第i个block写入NVM进行保存。
S15,下载程序将i增加1,返回执行S12。
新增加缓存空间,对第i个block进行解析并存入预先申请的缓存空间。对所缓存的数据一次性申请NVM空间并写入解析后的缓存数据,避免反复擦写NVM,从而提高了下载解析效率。
可选地,步骤S13中,所述缓存空间用于缓存临时程序包表、已解析数据、待解析数据和数据模块个数信息。
这样,新增的缓存空间保存临时程序包表、已解析的数据、未收齐待解析的数据。从而可以实现在缓存空间中一边下载数据,一边解析所下载数据。以此,提高数据的下载解析效率。
可选地,步骤S13中,对第i个block进行解析并存入缓存空间,包括:通过第一层状态机判断第i个block中当前待解析数据所属的类型,确定是否为下载指令的一级TLV中的LFD的值V;若是,则处理二级TLV的标签T和长度L,以及进入对二级TLV的V的解析;若不是,则进入对一级TLV的解析;通过第二层状态机对第i个block中的一级TLV进行解析,以及二级TLV的V进行解析;其中一级TLV包括DAP、ICV、LFD、CLFD;二级TLV为包组件。
这样,采用两层状态机的控制方式,第一层状态机判断第i个block中当前待解析数据所属的类型,区分一级TLV和二级TLV。第二层状态机再对一级TLV进行解析和对二级TLV的V进行解析,从而在一个大循环中完成对一级TLV和二级TLV的连续解析,由此在一个过程中实现一边下载数据,一边解析数据。
可选地,上述通过第一层状态机判断第i个block中当前待解析数据所属的类型,确定是否为下载指令的一级TLV中的下载文件数据LFD的值V;若是,则处理二级TLV的标签T和长度L,以及进入对二级TLV的V的解析;若不是,则进入对一级TLV的解析,包括:在第一层状态机处于包初始状态下,对第i个block中不属于LFD的V的部分进行解析,当解析完成后将第一层状态机转换为组件初始状态;在第一层状态机处于组件初始状态下,对二级TLV,即组件的T和L进行解析,当解析完成后将第一层状态机状态转换为组件处理状态;在第一层状态机处于组件处理状态下,对当前二级TLV,即当前组件的V进行解析,当解析完成后,检查是否还有剩余的组件待解析,若有,则将第一层状态机转换为组件初始状态;若无,则整个包的解析完成。
这样,通过第一层状态机对第i个block中的数据进行解析,对处于包初始状态、组件初始状态、组件处理状态的数据分别处理,从而实现对数据的分层控制。
可选地,上述通过第二层状态机对第i个block中的一级TLV进行解析,以及二级TLV的V进行解析,包括:对一级TLV进行解析:当第二层状态机处于解析T和L时,根据T切换到处理DAP、处理ICV、处理CLFD或处理LFD状态;当第二层状态机处于处理DAP时,校验DAP,完成后将第二层状态机切换到解析T和L的状态;当第二层状态机处于处理ICV时,初始化解密运算,完成后将第二层状态机切换到解析T和L的状态;当第二层状态机处于处理CLFD时,初始化解密运算,解密数据,计算哈希值,完成后将第一层状态机切换到组件初始状态;当第二层状态机处于处理LFD时,计算哈希值,完成后将第一层状态机切换到组件初始状态;对二级TLV的V进行解析:对第i个block中的多个组件的V进行解析;其中,所述多个组件包括头Header组件、目录Directory组件、导入Import组件、小应用程序Applet组件、类Class组件、导出Export组件、方法Method组件、静态域Static field组件、常量池Constant pool组件、引用定位Reference location组件;在第二层状态机处于解析第n个组件参数的L的状态下,缓存组件参数字节数,完成后将第二层状态机切换到解析第n个组件参数的V的状态;在第二层状态机处于解析第n个组件参数的V的状态下,解析该参数并将解析后的结果保存至缓存空间,完成后判断当前组件是否还有剩余待解析数据,若无,将第一层状态机切换到组件初始状态;若有,则判断是否还有需要解析的参数,若有,将第二层状态机切换到解析第n+1个组件参数的L的状态;若无,将第二层状态机切换到跳过不解析的状态;在第二层状态机处于跳过不解析的状态下,不做解析直接将数据保存至缓存空间,完成后判断当前组件是否还有剩余待解析数据,若无,将第一层状态机切换到组件初始状态;若有,保持当前状态。
这样,通过第二层状态机对第i个block中的各个组件进行解析,把组件中的参数以及所解析的组件数据保存至缓存空间,实现一边解析一边缓存。从而,通过两层状态机对各种状态的控制,提高下载解析的效率。
可选地,上述在第二层状态机处于解析第n个组件参数的V的状态下,解析该参数并将解析后的结果保存至缓存空间,还包括:在解析Directory组件时,累加Import组件、Applet组件、Class组件、Export组件、Method组件、Static组件、Constant pool组件的大小,一次性申请一整块NVM空间,并记录NVM空间的范围。
这样,通过解析Directory组件,得到各个组件的大小,累加各个组件的大小,一次性申请NVM空间,避免了反复申请NVM空间,从而提高了申请NVM空间的效率。
可选地,步骤S14中,将缓存的第i个block写入NVM进行保存,还包括:在记录NVM空间范围内,只在写头尾页时进行掉电保护。
这样,对写入NVM的头尾页进行掉电保护,在提高存储效率的同时,保证了数据的安全性和完整性。
可选地,步骤S14中,将缓存的第i个block写入NVM进行保存,包括:当第i个block中的某个组件还未全部解析,并且,缓存空间已满的情况下,将缓存空间中所保存的数据写入NVM;当第i个block中的某个组件已全部解析的情况下,将缓存空间中所保存的数据写入NVM。
这样,将缓存数据一次性写入NVM,从而提高了写入NVM空间的效率。
结合图3-1所示,本公开实施例提供的一个用于程序包下载解析方法的第一层状态机流程图,包括:
S101,下载程序判断所下载组件的处理是否完成,如果已经完成则下载终止;如果未完成,则进入S102步骤。
S102,下载程序根据数据状态进行第一层状态机分发,数据状态包括:包初始状态、组件初始状态、组件处理状态。
S103,下载程序在包初始状态下,处理下载指令的一级TLV。
S104,下载程序在组件初始状态下,判断是否收齐占有3字节的二级TLV的标签和长度,如果收齐则执行S105,否则返回至S101。
S105,下载程序设置第一层状态为组件处理状态。
S106,下载程序在组件处理状态下,对各个组件进行解析并存入缓存空间。
S107,下载程序把缓存空间的数据一次性写入NVM。
通过第一层状态机对第i个block中的数据进行解析,在包初始状态下对一级TLV进行处理,在组件初始状态下对各个组件进行解析流程的控制,在组件处理状态下对各个组件解析并保存至缓存空间,当缓存已满或者解析完所有组件后,一次性把缓存数据写入NVM。
结合图3-2所示,本公开实施例提供的一个用于程序包下载解析方法的第二层状态机Header组件处理流程图,包括:
S201,下载程序根据数据状态进行第二层的状态机分发。
S202,下载程序判断是否完整收齐10字节,如果满足条件则执行S203,否则返回至S201。
S203,下载程序解析10字节。
S204,下载程序设置状态为组件ID处理状态。
S205,下载程序判断是否完整收齐组件ID,如果满足条件则执行S206,否则返回至S201。
S206,下载程序解析组件ID,存入缓存。
S207,下载程序设置状态为组件处理状态。
S208,下载程序判断是否完整收齐组件,如果满足条件则执行S209,否则返回至S201。
S209,下载程序解析组件,存入缓存。
S210,下载程序设置第二层状态为接收组件状态,设置第一层状态为组件初始状态。
通过第二层状态机对第i个block中的Header组件进行解析,在接收组件状态下接收数据,在组件ID处理状态下解析出组件ID并保存至缓存空间,在组件处理状态将所解析的数据存入缓存并改变两层状态机的状态。从而,通过两层状态机对各种状态进行控制,实现一边解析一边缓存,提高下载解析的效率。
结合图4所示,本公开实施例提供的一个用于程序包下载解析方法的第二层状态机Directory组件处理流程图,包括:
S301,下载程序将收到的数据保存至已解析数据缓存空间。
S302,下载程序判断是否还有属于Directory组件的数据未收齐,如果还有则执行S301,否则执行S303。
S303,下载程序对收齐的Directory组件进行解析,计算其中列出的组件解析后的大小,为需要保存的组件申请NVM空间。
S304,下载程序设置第二层状态为接收组件状态,设置第一层状态为组件初始状态。
通过解析Directory组件,得到各个组件的大小,通过累加需要保存的组件解析后的大小,一次性申请NVM空间,避免了反复申请NVM空间,从而提高了申请NVM空间的效率。
结合图5所示,本公开实施例提供的一个用于程序包下载解析方法的部分组件实施效果表,包括:
Directory组件的解析保存时间比原有处理时间缩短了77%;
Static field组件的解析保存时间比原有处理时间缩短了77%;
Method组件的解析保存时间比原有处理时间缩短了50%。
结合图6所示,本公开实施例提供的一个用于程序包下载解析的装置的示意图,包括处理器(processor)600和存储器(memory)601。可选地,该装置还可以包括通信接口(Communication Interface)602和总线603。其中,处理器600、通信接口602、存储器601可以通过总线603完成相互间的通信。通信接口602可以用于信息传输。处理器600可以调用存储器601中的逻辑指令,以执行上述实施例的用于程序包下载解析的方法。
此外,上述的存储器601中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。
存储器601作为一种存储介质,可用于存储软件程序、计算机可执行程序,如本公开实施例中的方法对应的程序指令/模块。处理器600通过运行存储在存储器601中的程序指令/模块,从而执行功能应用以及数据处理,即实现上述实施例中用于程序包下载解析的方法。
存储器601可包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序;存储数据区可存储根据终端设备的使用所创建的数据等。此外,存储器601可以包括高速随机存取存储器,还可以包括非易失性存储器。
本公开实施例提供了一种终端设备,包含上述的用于程序包下载解析的装置。
本公开实施例提供了一种存储介质,存储有计算机可执行指令,所述计算机可执行指令设置为执行上述用于程序包下载解析的方法。
上述的存储介质可以是暂态计算机可读存储介质,也可以是非暂态计算机可读存储介质。
本公开实施例的技术方案可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中。而前述的存储介质可以是随机存取存储器(RAM,Random AccessMemory)等多种可以存储程序代码的介质,也可以是暂态存储介质。
以上描述和附图充分地示出了本公开的实施例,以使本领域的技术人员能够实践它们。其他实施例可以包括结构的、逻辑的、电气的、过程的以及其他的改变。实施例仅代表可能的变化。除非明确要求,否则单独的部件和功能是可选的,并且操作的顺序可以变化。一些实施例的部分和特征可以被包括在或替换其他实施例的部分和特征。而且,本申请中使用的用词仅用于描述实施例并且不用于限制权利要求。如在实施例以及权利要求的描述中使用的,除非上下文清楚地表明,否则单数形式的“一个”(a)、“一个”(an)和“所述”(the)旨在同样包括复数形式。类似地,如在本申请中所使用的术语“和/或”是指包含一个或一个以上相关联的列出的任何以及所有可能的组合。另外,当用于本申请中时,术语“包括”(comprise)及其变型“包括”(comprises)和/或包括(comprising)等指陈述的特征、整体、步骤、操作、元素,和/或组件的存在,但不排除一个或一个以上其它特征、整体、步骤、操作、元素、组件和/或这些的分组的存在或添加。在没有更多限制的情况下,由语句“包括一个…”限定的要素,并不排除在包括所述要素的过程、方法或者设备中还存在另外的相同要素。本文中,每个实施例重点说明的可以是与其他实施例的不同之处,各个实施例之间相同相似部分可以互相参见。对于实施例公开的方法、产品等而言,如果其与实施例公开的方法部分相对应,那么相关之处可以参见方法部分的描述。
本领域技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,可以取决于技术方案的特定应用和设计约束条件。所述技术人员可以对每个特定的应用来使用不同方法以实现所描述的功能,但是这种实现不应认为超出本公开实施例的范围。所述技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本文所披露的实施例中,所揭露的方法、产品(包括但不限于装置、设备等),可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的。
附图中的流程图和框图显示了根据本公开实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。在附图中的流程图和框图所对应的描述中,不同的方框所对应的操作或步骤也可以以不同于描述中所披露的顺序发生,有时不同的操作或步骤之间不存在特定的顺序。例如,两个连续的操作或步骤实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这可以依所涉及的功能而定。框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
Claims (9)
1.一种用于程序包下载解析的方法,其特征在于,包括:
启动程序包下载;其中,程序包被划分为n个数据块block;
下载程序包的第i个block,i=0,1,…,n-1;
对第i个block进行解析并存入预先申请的易失性存储器VM缓存空间;
将缓存的第i个block写入非易失性存储器NVM进行保存;
继续下载第i+1个block,进行循环处理;
其中,对第i个block进行解析并存入缓存空间,包括:
通过第一层状态机判断第i个block中当前待解析数据所属的类型,确定是否为下载指令的一级TLV中的下载文件数据LFD的值V;若是,则处理二级TLV的标签T和长度L,以及进入对二级TLV的V的解析;若不是,则进入对一级TLV的解析;
通过第二层状态机对第i个block中的一级TLV进行解析,以及二级TLV的V进行解析;
其中一级TLV包括数据鉴定模式DAP、初始链表向量ICV、明文下载文件数据LFD、密文下载文件数据CLFD;二级TLV为包组件;
其中,通过第二层状态机对第i个block中的一级TLV进行解析,以及二级TLV的V进行解析,包括:
对一级TLV进行解析:
当第二层状态机处于解析T和L时,根据T切换到处理DAP、处理ICV、处理CLFD或处理LFD状态;
当第二层状态机处于处理DAP时,校验DAP,完成后将第二层状态机切换到解析T和L的状态;
当第二层状态机处于处理ICV时,初始化解密运算,完成后将第二层状态机切换到解析T和L的状态;
当第二层状态机处于处理CLFD时,初始化解密运算,解密数据,计算哈希值,完成后将第一层状态机切换到组件初始状态;
当第二层状态机处于处理LFD时,计算哈希值,完成后将第一层状态机切换到组件初始状态;
对二级TLV的V进行解析:
对第i个block中的多个组件的V进行解析;其中,所述多个组件包括头Header组件、目录Directory组件、导入Import组件、小应用程序Applet组件、类Class组件、导出Export组件、方法Method组件、静态域Static field组件、常量池Constant pool组件、引用定位Reference location组件;
在第二层状态机处于解析第n个组件参数的L的状态下,缓存组件参数字节数,完成后将第二层状态机切换到解析第n个组件参数的V的状态;
在第二层状态机处于解析第n个组件参数的V的状态下,解析该参数并将解析后的结果保存至缓存空间,完成后判断当前组件是否还有剩余待解析数据,若无,将第一层状态机切换到组件初始状态;若有,则判断是否还有需要解析的参数,若有,将第二层状态机切换到解析第n+1个组件参数的L的状态;若无,将第二层状态机切换到跳过不解析的状态;
在第二层状态机处于跳过不解析的状态下,不做解析直接将数据保存至缓存空间,完成后判断当前组件是否还有剩余待解析数据,若无,将第一层状态机切换到组件初始状态;若有,保持当前状态。
2.根据权利要求1所述的方法,其特征在于,缓存空间用于缓存临时程序包表、已解析数据、待解析数据和数据模块个数信息。
3.根据权利要求1所述的方法,其特征在于,通过第一层状态机判断第i个block中当前待解析数据所属的类型,确定是否为下载指令的一级TLV中的下载文件数据LFD的值V;若是,则处理二级TLV的标签T和长度L,以及进入对二级TLV的V的解析;若不是,则进入对一级TLV的解析,包括:
在第一层状态机处于包初始状态下,对第i个block中不属于LFD的V的部分进行解析,当解析完成后将第一层状态机转换为组件初始状态;
在第一层状态机处于组件初始状态下,对二级TLV,即组件的T和L进行解析,当解析完成后将第一层状态机状态转换为组件处理状态;
在第一层状态机处于组件处理状态下,对当前二级TLV,即当前组件的V进行解析,当解析完成后,检查是否还有剩余的组件待解析,若有,则将第一层状态机转换为组件初始状态;若无,则整个包的解析完成。
4.根据权利要求1所述的方法,其特征在于,在第二层状态机处于解析第n个组件参数的V的状态下,解析该参数并将解析后的结果保存至缓存空间,还包括:
在解析Directory组件时,累加Import组件、Applet组件、Class组件、Export组件、Method组件、Static field组件、Constant pool组件的大小,一次性申请一整块NVM空间,并记录NVM空间的范围。
5.根据权利要求4所述的方法,其特征在于,一次性申请一整块NVM空间,并记录NVM空间的范围,还包括:
在记录NVM空间范围内,只在写头尾页时进行掉电保护。
6.根据权利要求1所述的方法,其特征在于,将缓存的第i个block写入NVM进行保存,包括:
当第i个block中的某个组件还未全部解析,并且,缓存空间已满的情况下,将缓存空间中所保存的数据写入NVM;
当第i个block中的某个组件已全部解析的情况下,将缓存空间中所保存的数据写入NVM。
7.一种用于程序包下载解析的装置,包括处理器和存储有程序指令的存储器,其特征在于,所述处理器被配置为在运行所述程序指令时,执行如权利要求1至6任一项所述的用于程序包下载解析的方法。
8.一种终端设备,其特征在于,包括如权利要求7所述的用于程序包下载解析的装置。
9.一种存储介质,存储有程序指令,其特征在于,所述程序指令在运行时,执行如权利要求1至6任一项所述的用于程序包下载解析的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210819054.5A CN114879986B (zh) | 2022-07-13 | 2022-07-13 | 用于程序包下载解析的方法及装置、终端设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210819054.5A CN114879986B (zh) | 2022-07-13 | 2022-07-13 | 用于程序包下载解析的方法及装置、终端设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114879986A CN114879986A (zh) | 2022-08-09 |
CN114879986B true CN114879986B (zh) | 2022-09-16 |
Family
ID=82683648
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210819054.5A Active CN114879986B (zh) | 2022-07-13 | 2022-07-13 | 用于程序包下载解析的方法及装置、终端设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114879986B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673188A (zh) * | 2008-09-09 | 2010-03-17 | 上海华虹Nec电子有限公司 | 一种固态硬盘的数据存取方法 |
CN102520994A (zh) * | 2011-12-06 | 2012-06-27 | 北京航空航天大学 | 流式加载虚拟文件方法及系统 |
US8478836B1 (en) * | 2010-06-07 | 2013-07-02 | Purplecomm Inc. | Proxy cache technology |
CN103440207A (zh) * | 2013-07-31 | 2013-12-11 | 北京智谷睿拓技术服务有限公司 | 缓存方法及装置 |
CN111934931A (zh) * | 2020-08-10 | 2020-11-13 | 中国科学院高能物理研究所 | 基于xvc协议的服务器及fpga固件更新调试方法 |
-
2022
- 2022-07-13 CN CN202210819054.5A patent/CN114879986B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101673188A (zh) * | 2008-09-09 | 2010-03-17 | 上海华虹Nec电子有限公司 | 一种固态硬盘的数据存取方法 |
US8478836B1 (en) * | 2010-06-07 | 2013-07-02 | Purplecomm Inc. | Proxy cache technology |
CN102520994A (zh) * | 2011-12-06 | 2012-06-27 | 北京航空航天大学 | 流式加载虚拟文件方法及系统 |
CN103440207A (zh) * | 2013-07-31 | 2013-12-11 | 北京智谷睿拓技术服务有限公司 | 缓存方法及装置 |
CN111934931A (zh) * | 2020-08-10 | 2020-11-13 | 中国科学院高能物理研究所 | 基于xvc协议的服务器及fpga固件更新调试方法 |
Non-Patent Citations (1)
Title |
---|
可重构高速数据加密系统设计和实现;王凯;《电子测量技术》;20211015;第8-15页 * |
Also Published As
Publication number | Publication date |
---|---|
CN114879986A (zh) | 2022-08-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109948347B (zh) | 一种数据存储方法及装置、服务器及可读存储介质 | |
CN109195157B (zh) | 应用管理方法、装置及终端 | |
US12086278B2 (en) | Method of encoding and decoding memory data for software security, recording medium and apparatus for performing the method | |
CN105260639A (zh) | 一种脸部识别系统的数据更新的方法及装置 | |
CN108446535A (zh) | 基于代码执行顺序的源代码加固方法及装置 | |
CN111400016A (zh) | 一种调用应用程序接口函数的方法和设备 | |
CN106293529A (zh) | 一种智能卡存储数据的方法、装置和智能卡 | |
CN111258756A (zh) | 一种负载均衡方法、装置、计算机设备和可读存储介质 | |
CN114879986B (zh) | 用于程序包下载解析的方法及装置、终端设备及存储介质 | |
CN110147653B (zh) | 应用程序安全加固方法及装置 | |
CN109753384B (zh) | 云主机的快照备份方法、装置、计算机设备和存储介质 | |
US20130132681A1 (en) | Temporal standby list | |
CN108133026B (zh) | 一种多数据的处理方法、系统及存储介质 | |
CN109643239B (zh) | Java卡应用存储器占用空间优化 | |
EP3507689B1 (en) | Java card application package used as a library package | |
CN108154042B (zh) | 一种文件系统加密方法及装置 | |
US11853412B2 (en) | Systems and methods for defeating stack-based cyber attacks by randomizing stack frame size | |
CN108874491A (zh) | 信息加载的方法及装置 | |
CN117313166A (zh) | 一种数据填充方法、装置、计算机设备及存储介质 | |
CN106204031B (zh) | 卡应用处理方法及装置 | |
CN106657092B (zh) | 一种基于ssl/tls的业务处理方法及装置 | |
CN108052294A (zh) | 一种分布式存储系统的修改写方法和修改写系统 | |
CN110110506B (zh) | 基于应用程序安装包的程序加固方法及装置 | |
JP2007280443A (ja) | データ処理装置およびデータ処理方法とプログラム | |
CN112732649A (zh) | Ofd文档签章方法、电子设备及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |