CN111443942B - 资源文件的打包方法、装置、存储介质和计算机设备 - Google Patents

资源文件的打包方法、装置、存储介质和计算机设备 Download PDF

Info

Publication number
CN111443942B
CN111443942B CN202010322852.8A CN202010322852A CN111443942B CN 111443942 B CN111443942 B CN 111443942B CN 202010322852 A CN202010322852 A CN 202010322852A CN 111443942 B CN111443942 B CN 111443942B
Authority
CN
China
Prior art keywords
file
resource
resource file
packaging
files
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
Application number
CN202010322852.8A
Other languages
English (en)
Other versions
CN111443942A (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.)
Guangzhou Huya Technology Co Ltd
Original Assignee
Guangzhou Huya Technology 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 Guangzhou Huya Technology Co Ltd filed Critical Guangzhou Huya Technology Co Ltd
Priority to CN202010322852.8A priority Critical patent/CN111443942B/zh
Publication of CN111443942A publication Critical patent/CN111443942A/zh
Application granted granted Critical
Publication of CN111443942B publication Critical patent/CN111443942B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2107File encryption

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Security & Cryptography (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及数据安全技术领域,尤其涉及一种资源文件的打包方法、装置、存储介质和计算机设备,包括:获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件;根据各个中间资源文件确定对应的属性信息,并依据所述属性信息生成所述应用程序的资源文件索引信息;对所述打包文件头、所述资源文件索引信息以及所述中间资源文件进行打包,生成打包文件;本方案中,将应用程序的资源文件进行私有格式的打包,使其无法通过通用软件读取,起到关键内容保密的作用,另外,打包后的私有格式文件自带签名校验码,无法被篡改。

Description

资源文件的打包方法、装置、存储介质和计算机设备
技术领域
本申请涉及数据安全技术领域,尤其涉及一种资源文件的打包方法、装置、存储介质和计算机设备。
背景技术
目前,随着智能设备的广泛应用,人们对于应用程序的多样化有了明显的需求,因此,为了符合用户需求,提高用户体验,不仅原有的应用程序随着用户的需求变动,进行资源更新,也会出现一些新的应用程序。
现有技术中,原有的或新的应用程序的安装一般通过通用软件,如软件安装助手进行更新或下载,如果应用程序的脚本代码和资源文件等使用一般的格式进行打包,用户在下载的过程中,软件安装助手可能会对该应用程序进行篡改,安全性较差;另外,一般游戏类应用程序的脚本代码以及资源文件占用内存较大,下载速度较慢,如果使用一般格式进行打包,会影响其解压时的加载速度。
发明内容
本申请的目的旨在至少能解决上述的技术缺陷之一,特别是现有技术中应用程序的脚本代码和资源文件等打包方式安全性较低,容易被篡改的技术缺陷。
本申请提供一种资源文件的打包方法,包括如下步骤:
获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件;
根据各个中间资源文件确定对应的属性信息,并依据所述属性信息生成所述应用程序的资源文件索引信息;
对所述打包文件头、所述资源文件索引信息以及所述中间资源文件进行打包,生成打包文件。
在一个实施例中,所述获取应用程序的多个原始资源文件的步骤之前,还包括:
新建存档文件,其中,所述存档文件用于保存原始资源文件的打包文件头、处理后的资源文件索引信息以及资源文件内容。
在一个实施例中,根据所述原始资源文件建立打包文件头的步骤,包括:
获取所述存档文件的格式版本,以对所述存档文件进行标记;根据所述原始资源文件的文件内容预留空字符,以占位校验码;计算所述原始资源文件的个数,以形成相应的文件个数信息;
将所述格式版本、所述空字符以及所述文件个数信息写入所述存档文件中,以建立打包文件头。
在一个实施例中,对所述打包文件头、所述资源文件索引信息以及所述中间资源文件进行打包的步骤之前,还包括:
将所述中间资源文件的文件内容添加密钥得到目标资源文件;
通过所述目标资源文件确定对应的MD5值;
将所述MD5值添加至所述空字符处,以得到所述打包文件头的校验码。
在一个实施例中,对所述原始资源文件进行预处理得到中间资源文件的步骤,包括:
根据所述原始资源文件的文件类型对所述原始资源文件进行压缩,对所述压缩的原始资源文件进行加密,得到中间资源文件。
在一个实施例中,所述中间资源文件的属性信息包括各个中间资源文件的文件名、文件名长度、压缩加密方式、文件大小以及内容偏移量;
依据所述属性信息生成所述应用程序的资源文件索引信息的步骤之前,还包括:
获取所述打包文件头的字节长度,其中,所述打包文件头的字节长度为所述格式版本对应的字节长度、所述校验码对应的字节长度以及所述文件个数信息对应的字节长度之和;
获取所述中间资源文件的字节长度,其中,所述中间资源文件的字节长度包括各个中间资源文件的文件名对应的字节长度、文件名长度对应的字节长度、压缩加密方式对应的字节长度、文件大小对应的字节长度、内容偏移量对应的字节长度之和;
将所述打包文件头的字节长度以及所述中间资源文件的字节长度相加,得到首个中间资源文件中的内容偏移量对应的字节长度。
在一个实施例中,依据所述属性信息生成所述应用程序的资源文件索引信息的步骤,包括:
根据所述中间资源文件的字节长度在所述存档文件中建立相应的字节位;
将各个中间资源文件的属性信息依次写入所述字节位中,生成所述应用程序的资源文件索引信息;
其中,所述属性信息中的内容偏移量为前一个中间资源文件的内容偏移量与当前中间资源文件的字节长度之和;
若为首个中间资源文件的内容偏移量,则为所述打包文件头的字节长度以及各个中间资源文件的字节长度之和。
本申请还提供了一种资源文件的打包装置,包括:
预处理模块,用于获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件;
确定索引模块,用于根据各个中间资源文件确定对应的属性信息,并依据所述属性信息生成所述应用程序的资源文件索引信息;
打包模块,用于对所述打包文件头、所述资源文件索引信息以及所述中间资源文件进行打包,生成打包文件。
本申请还提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述的资源文件的打包方法的步骤。
本申请还提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述的资源文件的打包方法的步骤。
上述资源文件的打包方法、装置、存储介质和计算机设备,获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件;根据各个中间资源文件确定对应的属性信息,并依据所述属性信息生成所述应用程序的资源文件索引信息;对所述打包文件头、所述资源文件索引信息以及所述中间资源文件进行打包,生成打包文件。
本方案中,通过上述对资源文件的打包方法,将应用程序的资源文件进行私有格式的打包,使其无法通过通用软件读取,起到关键内容保密的作用,减少资源文件被篡改的风险;且打包后的资源文件内部包含资源文件的索引信息,通过索引信息能够直接读取每个资源文件的内容,快速便捷。
本申请附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本申请的实践了解到。
附图说明
本申请上述的和/或附加的方面和优点从下面结合附图对实施例的描述中将变得明显和容易理解,其中:
图1为一个实施例的资源文件的打包方法流程示意图;
图2为一个实施例的原始资源文件的预处理流程示意图;
图3为一个实施例的使用私有格式打包的文件效果示意图;
图4是一个实施例的资源文件的打包装置结构示意图;
图5为一个实施例的计算机设备的内部结构示意图。
具体实施方式
下面详细描述本申请的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本申请,而不能解释为对本申请的限制。
本技术领域技术人员可以理解,除非特意声明,这里使用的单数形式“一”、“一个”、“所述”和“该”也可包括复数形式。应该进一步理解的是,本申请的说明书中使用的措辞“包括”是指存在所述特征、整数、步骤、操作、元件和/或组件,但是并不排除存在或添加一个或多个其他特征、整数、步骤、操作、元件、组件和/或它们的组合。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语),具有与本申请所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语,应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像本申请实施例中一样被特定定义,否则不会用理想化或过于正式的含义来解释。
目前,随着智能设备的广泛应用,人们对于应用程序的多样化有了明显的需求,因此,为了符合用户需求,提高用户体验,不仅原有的应用程序随着用户的需求变动,进行资源更新,也会出现一些新的应用程序。
原有的或新的应用程序的安装一般通过通用软件,如软件安装助手进行更新或下载,如果应用程序的脚本代码和资源文件等使用一般的格式进行打包,用户在下载的过程中,软件安装助手可能会对该应用程序进行篡改,安全性较差;另外,一般游戏类应用程序的脚本代码以及资源文件占用内存较大,下载速度较慢,如果使用一般格式进行打包,会影响其解压时的加载速度。
因此,本申请提出下述实施方式,以解决应用程序的脚本代码和资源文件等打包方式安全性较低,容易被篡改的技术缺陷。
在一个实施例中,如图1所示,图1为一个实施例的资源文件的打包方法流程示意图,本实施例中提供了一种资源文件的打包方法,包括如下步骤:
S110:获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件;
如上所述,由于原有的或新的应用程序在下载安装的过程中,需要将应用程序的脚本代码和资源文件等使用一般的格式进行打包,该种打包方式会导致用户在下载的过程中,应用程序的脚本代码和资源文件存在被篡改的风险,安全性较差。
以游戏为例,当用户需要下载某款游戏时,一般通过软件安装助手进行下载并安装,若使用一般的打包方式,在游戏安装包下载的过程中,该游戏安装包中的资源文件等可能存在被篡改的风险。
因此,本申请为了提高应用程序下载安装过程中的数据安全性,对应用程序的原始资源文件进行私有格式的打包,使得其中的资源文件无法通过通用软件读取,其关键内容得到保密。
首先,为了对原始资源文件进行打包,需要建立打包文件头,依据该打包文件头可以清楚地解析出当前应用程序的相关信息,例如,当前使用的打包格式版本、该应用程序资源文件的校验码以及该打包文件中包含的资源文件的个数等。
其中,打包后的私有格式文件自带签名校验码,能够更好地保证打包文件在安装下载或解压的过程中无法被篡改,提高数据安全性。
可以理解的是,这里的资源文件指的是所有可以从中读取出应用程序需要的资源的文件;其中,资源的类型可以是图片、音频、视频、文字资源,或者其他可以在计算机中展示的内容等等;该资源文件可以由专门的程序接口去读取,并在应用程序中根据需要向用户展示。
当建立打包文件头后,还需对原始资源文件进行预处理,该预处理操作包括但不限于对原始资源文件进行压缩、加密处理,使得原始资源文件占用资源较少,且安全性更高。
需要说明的是,本申请中资源文件的私有格式的打包方式同样也适用于应用程序的脚本代码的打包。
S120:根据各个中间资源文件确定对应的属性信息,并依据所述属性信息生成所述应用程序的资源文件索引信息;
本步骤中,当通过步骤S110中获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件后,需要确定各个中间资源文件的属性信息,以便生成资源文件索引信息。
可以理解的是,这里的中间资源文件指的是对原始资源文件进行预处理后得到的资源文件,该资源文件还需进行后续的处理操作,并不能作为最终打包发送的资源文件,因而作为中间资源文件。
这里的资源文件索引信息指的是根据该中间资源文件的属性信息生成的索引,包括但不限定于中间资源文件的文件名、文件名长度、压缩加密方式、文件大小以及内容偏移量等。
打包后的文件内部包含资源文件的索引,因此,通过索引能直接读取每个资源文件的内容,简单明了。
S130:对所述打包文件头、所述资源文件索引信息以及所述中间资源文件进行打包,生成打包文件。
本步骤中,当通过步骤S110和步骤S120分别得到打包文件头、中间资源文件以及资源文件索引信息后,需要将三者进行打包,最终生成打包文件。
举例来说,在得到打包文件头以及资源文件索引信息后,需要在所述资源文件索引信息后依次添加所述中间资源文件的文件内容,这样,便能够将资源文件索引信息与资源文件内容之间一一对应,最终得到了包含该应用程序对应的打包文件头、资源文件的索引信息以及对应的资源文件内容的打包文件。
上述资源文件的打包方法,获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件;根据各个中间资源文件确定对应的属性信息,并依据所述属性信息生成所述应用程序的资源文件索引信息;对所述中间资源文件的文件内容添加密钥得到目标资源文件,并在所述资源文件索引信息后依次添加所述目标资源文件的文件内容;根据所述打包文件头、所述资源文件索引信息以及对应的目标资源文件进行打包,生成打包文件。
本方案中,将应用程序的资源文件进行私有格式的打包,使其无法通过通用软件读取,起到关键内容保密的作用;打包后的资源文件内部包含资源文件的索引信息,通过索引信息能够直接读取每个资源文件的内容;并且,该打包文件能够对单个原始资源文件进行是否加密的策略控制,平衡加载速度和安全性,也能够对单个原始资源文件进行是否压缩的策略控制,平衡加载速度和大小;另外,打包后的私有格式文件自带签名校验码,无法被篡改。
在一个实施例中,步骤S110中获取应用程序的多个原始资源文件的步骤之前,还可以包括:
S100:新建存档文件,其中,所述存档文件用于保存原始资源文件的打包文件头、处理后的资源文件索引信息以及资源文件内容。
本申请中,为了对应用程序的资源文件进行私有格式的打包,需要新建存档文件,以便对进行私有格式处理后的资源文件进行保存,形成打包文件。
其中,该存档文件中保存有原始资源文件的打包文件头,打包文件头中包括有该存档文件的格式版本,以便查看当前存档文件的版本,也有利于更换版本。
打包文件头中还包括有资源文件的校验码,以防止资源文件被篡改,另外,还包括有资源文件的个数,以便进行遍历时,方便读取该应用程序中的每个资源文件。
该存档文件中还保存有处理后的资源文件索引信息以及资源文件内容,其中,处理后的资源文件索引信息指的就是中间资源文件对应的资源文件索引信息,该索引信息包括但不限定于各个中间资源文件的文件名、文件名长度、压缩加密方式、文件大小以及内容偏移量等。
在一个实施例中,步骤S110中根据所述原始资源文件建立打包文件头的步骤,可以包括:
S111:获取所述存档文件的格式版本,以对所述存档文件进行标记;根据所述原始资源文件的文件内容预留空字符,以占位校验码;计算所述原始资源文件的个数,以形成相应的文件个数信息;
S112:将所述格式版本、所述空字符以及所述文件个数信息写入所述存档文件中,以建立打包文件头。
本实施例中,为了建立打包文件头,需要获取存档文件的格式版本,该格式版本用于标记当前存档文件的格式,以便在下一次更新版本时进行参考等。
并且,为了防止文件被篡改,本申请的私有格式打包方式中,预先采用在打包文件头中添加校验码,以防止被通用软件所读取,能够将关键的资源文件内容进行保密。
另外,为了在遍历资源文件时方便读取每个资源文件,采用了在打包文件头中添加一定的字节位,以保存应用程序总的文件个数。
示例如下:
1)新建存档文件D1;
2)在D1中写入“格式版本”,例如:1,2,3,整型(4个字节),用来标记当前存档文件的格式;
3)接着追加32个字节的空字符(十六进制:00),用来占位校验码;
4)再追加原始资源文件个数,整型(4个字节),方便遍历并读取每个资源文件。
在一个实施例中,步骤S130中对所述打包文件头、所述资源文件索引信息以及所述中间资源文件进行打包的步骤之前,还可以包括:
S131:将所述中间资源文件的文件内容添加密钥得到目标资源文件;
S132:通过所述目标资源文件确定对应的MD5值,将所述MD5值添加至所述空字符处,以得到所述打包文件头的校验码。
本实施例中,当通过步骤S120中根据各个中间资源文件确定对应的属性信息,并依据所述属性信息生成所述应用程序的资源文件索引信息后,继续对中间资源文件的文件内容进行相关处理,以得到目标资源文件,这样,可以提高资源文件的安全性,避免被篡改。
需要说明的是,这里对中间资源文件的文件内容进行相关处理的操作包括但不限定于对中间资源文件的文件内容添加密钥,以进一步防止数据被篡改,提高安全性。
举例来说,可将中间资源文件中的二进制内容读入该资源文件的文件内容中,并追加一个固定字符串的二进制内容,如K1,得到新的二进制内容,根据该新的二进制内容可生成目标资源文件。
然后根据该目标资源文件确定对应的MD5值;可以理解的是,MD5可以从一个字符串或一个文件中按照一定的规则生成一个特殊的字符串,并且一个文件所对应的MD5摘要是固定的,当文件内容变化后,其MD5值也会不一样。
因此,本申请在打包文件头中添加目标资源文件的校验码,可使用MD5值来验证目标资源文件有没有被篡改。
在一个实施例中,如图2所示,图2为一个实施例的原始资源文件的预处理流程示意图;步骤S110中对所述原始资源文件进行预处理得到中间资源文件的步骤,可以包括:
S113:根据所述原始资源文件的文件类型对所述原始资源文件进行压缩,对所述压缩的原始资源文件进行加密,得到中间资源文件。
本实施例中,对原始资源文件进行预处理的操作包括但不限定于压缩、加密的方式,参见图2。
其中,是否压缩的选择依据包括:文本类型的文件压缩比高,可以选择压缩,二进制文件压缩比低,可以不压缩;压缩之后读取速度稍慢,不压缩读取速度更快。
并且,压缩时可优先选用LZ4算法进行压缩,不需要压缩的文件可直接对其进行加密。
是否加密的选择依据包括:重要的文件加密,不重要的文件可以不加密;加密之后读取速度稍慢,不加密读取速度更快。
并且,加密时可优先选用des对称加密算法进行加密,不需要加密的文件可直接生成中间资源文件。
上述实施例中,能对单个原始文件进行是否加密的策略控制,平衡加载速度和安全性;还能对单个原始文件进行是否压缩的策略控制,平衡加载速度和大小。
在一个实施例中,所述中间资源文件的属性信息包括各个中间资源文件的文件名、文件名长度、压缩加密方式、文件大小以及内容偏移量;步骤S120中依据所述属性信息生成所述应用程序的资源文件索引信息的步骤之前,还包括:
S121:获取所述打包文件头的字节长度,其中,所述打包文件头的字节长度为所述格式版本对应的字节长度、所述校验码对应的字节长度以及所述文件个数信息对应的字节长度之和;
S122:获取所述中间资源文件的字节长度,其中,所述中间资源文件的字节长度包括各个中间资源文件的文件名对应的字节长度、文件名长度对应的字节长度、压缩加密方式对应的字节长度、文件大小对应的字节长度、内容偏移量对应的字节长度之和;
S123:将所述打包文件头的字节长度以及所述中间资源文件的字节长度相加,得到首个中间资源文件中的内容偏移量对应的字节长度。
本实施例中,当根据中间资源文件的属性信息生成相应的资源文件索引信息之前,还需要得到各个属性信息对应的字节长度,以便在存档文件中建立相应的字节位保存属性信息。
其中,中间资源文件的属性信息包括但不限定于该中间资源文件的文件名、文件名长度、压缩加密方式、文件大小以及内容偏移量等,若没有进行压缩和/或加密,则为空字符,其中,文件大小指的是经压缩加密处理后的中间资源文件的文件大小。
内容偏移量,指的是从指定位置向前或向后移动的字节数,偏移量是用来从文件中找到所用数据时用的,通常偏移量分三种,一个是从文件开头向后移动若干字节来寻找目标(这个是没有符号的,因为开头的前面没有数据),第二个是从文件结尾向前移动若干字节找到目标(同样没有符号),第三个是相对位置,是从文件当前位置向前或向后移动寻找(有符号)。
举例来说,计算打包文件头及属性信息的字节长度H1,计算方式为:
i、公共部分(打包文件头):4字节(格式版本)+32字节(验证码)+4字节(文件个数);
ii、每个中间资源文件部分:4字节(保存文件x名称长度的字段)+N1(文件x名称长度)+4字节(压缩加密方式)+4字节(处理后文件大小)+4字节(内容偏移量);
iii、将公共部分和每个文件部分全部的字节数相加,即是H1。
上述实施例中的计算方式为本申请私有格式中的计算方式,可用于解压时根据该计算方式进行反向解压。
在一个实施例中,如图3所示,图3为一个实施例的使用私有格式打包的文件效果示意图;步骤S120中依据所述属性信息生成所述应用程序的资源文件索引信息的步骤,可以包括:
S124:根据所述中间资源文件的字节长度在所述存档文件中建立相应的字节位;
S125:将各个中间资源文件的属性信息依次写入所述字节位中,生成所述应用程序的资源文件索引信息;
S126:其中,所述属性信息中的内容偏移量为前一个中间资源文件的内容偏移量与当前中间资源文件的字节长度之和;
S127:若为首个中间资源文件的内容偏移量,则为所述打包文件头的字节长度以及各个中间资源文件的字节长度之和。
本实施例中,当在存档文件中建立与中间资源文件的字节长度相应的字节位后,再将各个中间资源文件的属性信息写入对应的字节位中,以生成资源文件索引信息,根据该索引信息可查找每个资源文件内容。
举例来说,将每个中间资源文件的索引信息追加到存档文件D1中,方式如下:
i.写入文件名长度,整型(4个字节);
ii.写入文件名,字符串;
iii.写入压缩加密方式,整型(4个字节);
iv.写入预处理后的文件大小,整型(4个字节);
v.写入内容偏移量Xi,Xi的计算方式为,Xi=Xi-1+Li,其中,Xi-1为前一个中间资源文件的内容偏移量,Li为当前的中间资源文件的字节长度。
另外,如果是中间资源文件的内容偏移量,则Xi=H1,其中,H1为所述打包文件头的字节长度以及各个中间资源文件的字节长度之和。
在一个实施例中,如图4所示,图4为一个实施例的资源文件的打包装置结构示意图,本实施例中提供了一种资源文件的打包装置,其包括:预处理模块210、确定索引模块220、打包模块230,其中:
预处理模块210,用于获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件。
如上所述,由于原有的或新的应用程序在下载安装的过程中,需要将应用程序的脚本代码和资源文件等使用一般的格式进行打包,该种打包方式会导致用户在下载的过程中,应用程序的脚本代码和资源文件存在被篡改的风险,安全性较差。
以游戏为例,当用户需要下载某款游戏时,一般通过软件安装助手进行下载并安装,若使用一般的打包方式,在游戏安装包下载的过程中,该游戏安装包中的资源文件等可能存在被篡改的风险。
因此,本申请为了提高应用程序下载安装过程中的数据安全性,对应用程序的原始资源文件进行私有格式的打包,使得其中的资源文件无法通过通用软件读取,其关键内容得到保密。
首先,为了对原始资源文件进行打包,需要建立打包文件头,依据该打包文件头可以清楚地解析出当前应用程序的相关信息,例如,当前使用的打包格式版本、该应用程序资源文件的校验码以及该打包文件中包含的资源文件的个数等。
其中,打包后的私有格式文件自带签名校验码,能够更好地保证打包文件在安装下载或解压的过程中无法被篡改,提高数据安全性。
可以理解的是,这里的资源文件指的是所有可以从中读取出应用程序需要的资源的文件;其中,资源的类型可以是图片、音频、视频、文字资源,或者其他可以在计算机中展示的内容等等;该资源文件可以由专门的程序接口去读取,并在应用程序中根据需要向用户展示。
当建立打包文件头后,还需对原始资源文件进行预处理,该预处理操作包括但不限于对原始资源文件进行压缩、加密处理,使得原始资源文件占用资源较少,且安全性更高。
需要说明的是,本申请中资源文件的私有格式的打包方式同样也适用于应用程序的脚本代码的打包。
确定索引模块220,用于根据各个中间资源文件确定对应的属性信息,并依据所述属性信息生成所述应用程序的资源文件索引信息。
本模块中,当通过预处理模块210中获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件后,需要确定各个中间资源文件的属性信息,以便生成资源文件索引信息。
可以理解的是,这里的中间资源文件指的是对原始资源文件进行预处理后得到的资源文件,该资源文件还需进行后续的处理操作,并不能作为最终打包发送的资源文件,因而作为中间资源文件。
这里的资源文件索引信息指的是根据该中间资源文件的属性信息生成的索引,包括但不限定于中间资源文件的文件名、文件名长度、压缩加密方式、文件大小以及内容偏移量等。
打包后的文件内部包含资源文件的索引,因此,通过索引能直接读取每个资源文件的内容,简单明了。
打包模块230,用于根据所述打包文件头、所述资源文件索引信息以及对应的目标资源文件进行打包,生成打包文件。
本模块中,当通过预处理模块210和确定索引模块220分别得到打包文件头、中间资源文件以及资源文件索引信息后,需要将三者进行打包,最终生成打包文件。
举例来说,在得到打包文件头以及资源文件索引信息后,需要在所述资源文件索引信息后依次添加所述中间资源文件的文件内容,这样,便能够将资源文件索引信息与资源文件内容之间一一对应,最终得到了包含该应用程序对应的打包文件头、资源文件的索引信息以及对应的资源文件内容的打包文件。
上述资源文件的打包装置,获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行预处理得到中间资源文件;根据各个中间资源文件确定对应的属性信息,并依据所述属性信息生成所述应用程序的资源文件索引信息;对所述中间资源文件的文件内容添加密钥得到目标资源文件,并在所述资源文件索引信息后依次添加所述目标资源文件的文件内容;根据所述打包文件头、所述资源文件索引信息以及对应的目标资源文件进行打包,生成打包文件。
本方案中,将应用程序的资源文件进行私有格式的打包,使其无法通过通用软件读取,起到关键内容保密的作用;打包后的资源文件内部包含资源文件的索引信息,通过索引信息能够直接读取每个资源文件的内容;并且,该打包文件能够对单个原始资源文件进行是否加密的策略控制,平衡加载速度和安全性,也能够对单个原始资源文件进行是否压缩的策略控制,平衡加载速度和大小;另外,打包后的私有格式文件自带签名校验码,无法被篡改。
关于资源文件的打包装置的具体限定可以参见上文中对于资源文件的打包方法的限定,在此不再赘述。上述资源文件的打包装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于终端设备中的处理器中,也可以以软件形式存储于终端设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种存储介质,所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述的资源文件的打包方法的步骤。
在一个实施例中,提供了一种计算机设备,所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如上述实施例中任一项所述的资源文件的打包方法的步骤。
图5是一种计算机设备的内部结构示意图,该计算机设备300可以被提供为一服务器。参照图5,计算机设备300包括处理组件302,其进一步包括一个或多个处理器,以及由存储器301所代表的存储器资源,用于存储可由处理组件302的执行的指令,例如应用程序。存储器301中存储的应用程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理组件302被配置为执行指令,以执行上述任意实施例的资源文件的打包方法。
计算机设备300还可以包括一个电源组件303被配置为执行计算机设备300的电源管理,一个有线或无线网络接口304被配置为将计算机设备300连接到网络,和一个输入输出(I/O)接口305。计算机设备300可以操作基于存储在存储器301的操作系统,例如WindowsServer TM、Mac OS XTM、Unix TM、Linux TM、Free BSDTM或类似。
本领域技术人员可以理解,图5中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
以上所述仅是本申请的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

Claims (8)

1.一种资源文件的打包方法,其特征在于,包括如下步骤:
获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行压缩、加密处理得到中间资源文件,所述打包文件头包括空字符,所述空字符是根据原始资源文件内容预留,以占位校验码的;
根据各个中间资源文件确定对应的属性信息,所述中间资源文件的属性信息包括各个中间资源文件的文件名、文件名长度、压缩加密方式、文件大小以及内容偏移量,所述内容偏移量为目标从指定位置向前或向后移动的字节数,所述内容偏移量用于从文件中查找数据;
获取所述打包文件头的字节长度,其中,所述打包文件头的字节长度为格式版本对应的字节长度、校验码对应的字节长度以及文件个数信息对应的字节长度之和;
获取所述中间资源文件的字节长度,其中,所述中间资源文件的字节长度包括各个中间资源文件的文件名对应的字节长度、文件名长度对应的字节长度、压缩加密方式对应的字节长度、文件大小对应的字节长度、内容偏移量对应的字节长度之和;
将所述打包文件头的字节长度以及所述中间资源文件的字节长度相加,得到首个中间资源文件中的内容偏移量对应的字节长度;
依据所述属性信息生成所述应用程序的资源文件索引信息;
将所述中间资源文件的文件内容添加密钥得到目标资源文件,包括:将中间资源文件中的二进制内容读入该中间资源文件的文件内容中,并追加一个固定字符串的二进制内容,得到新的二进制内容,根据该新的二进制内容生成目标资源文件;
通过所述目标资源文件确定对应的MD5值;将所述MD5值添加至所述空字符处,以得到所述打包文件头的校验码;
对所述打包文件头、所述资源文件索引信息以及所述中间资源文件进行打包,生成打包文件。
2.根据权利要求1所述的资源文件的打包方法,其特征在于,所述获取应用程序的多个原始资源文件的步骤之前,还包括:
新建存档文件,其中,所述存档文件用于保存原始资源文件的打包文件头、处理后的资源文件索引信息以及资源文件内容。
3.根据权利要求2所述的资源文件的打包方法,其特征在于,根据所述原始资源文件建立打包文件头的步骤,包括:
获取所述存档文件的格式版本,以对所述存档文件进行标记;根据所述原始资源文件的文件内容预留空字符,以占位校验码;计算所述原始资源文件的个数,以形成相应的文件个数信息;
将所述格式版本、所述空字符以及所述文件个数信息写入所述存档文件中,以建立打包文件头。
4.根据权利要求3所述的资源文件的打包方法,其特征在于,对所述原始资源文件进行压缩、加密处理得到中间资源文件的步骤,包括:
根据所述原始资源文件的文件类型对所述原始资源文件进行压缩,对所述压缩的原始资源文件进行加密,得到中间资源文件。
5.根据权利要求2所述的资源文件的打包方法,其特征在于,依据所述属性信息生成所述应用程序的资源文件索引信息的步骤,包括:
根据所述中间资源文件的字节长度在所述存档文件中建立相应的字节位;
将各个中间资源文件的属性信息依次写入所述字节位中,生成所述应用程序的资源文件索引信息;
其中,所述属性信息中的内容偏移量为前一个中间资源文件的内容偏移量与当前中间资源文件的字节长度之和;
若为首个中间资源文件的内容偏移量,则为所述打包文件头的字节长度以及各个中间资源文件的字节长度之和。
6.一种资源文件的打包装置,其特征在于,包括:
预处理模块,用于获取应用程序的多个原始资源文件,根据所述原始资源文件建立打包文件头,并对所述原始资源文件进行压缩、加密处理得到中间资源文件,所述打包文件头包括空字符,所述空字符是根据原始资源文件内容预留,以占位校验码的;
确定索引模块,用于将所述中间资源文件的文件内容添加密钥得到目标资源文件,包括:将中间资源文件中的二进制内容读入该中间资源文件的文件内容中,并追加一个固定字符串的二进制内容,得到新的二进制内容,根据该新的二进制内容生成目标资源文件,通过所述目标资源文件确定对应的MD5值,将所述MD5值添加至所述空字符处,以得到所述打包文件头的校验码;
根据各个中间资源文件确定对应的属性信息,所述中间资源文件的属性信息包括各个中间资源文件的文件名、文件名长度、压缩加密方式、文件大小以及内容偏移量,所述内容偏移量为目标从指定位置向前或向后移动的字节数,所述内容偏移量用于从文件中查找数据;
获取所述打包文件头的字节长度,其中,所述打包文件头的字节长度为格式版本对应的字节长度、校验码对应的字节长度以及文件个数信息对应的字节长度之和;
获取所述中间资源文件的字节长度,其中,所述中间资源文件的字节长度包括各个中间资源文件的文件名对应的字节长度、文件名长度对应的字节长度、压缩加密方式对应的字节长度、文件大小对应的字节长度、内容偏移量对应的字节长度之和;
将所述打包文件头的字节长度以及所述中间资源文件的字节长度相加,得到首个中间资源文件中的内容偏移量对应的字节长度;
依据所述属性信息生成所述应用程序的资源文件索引信息;
打包模块,用于对所述打包文件头、所述资源文件索引信息以及所述中间资源文件进行打包,生成打包文件。
7.一种存储介质,其特征在于:所述存储介质中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至5中任一项所述的资源文件的打包方法的步骤。
8.一种计算机设备,其特征在于:所述计算机设备中存储有计算机可读指令,所述计算机可读指令被一个或多个处理器执行时,使得一个或多个处理器执行如权利要求1至5中任一项所述的资源文件的打包方法的步骤。
CN202010322852.8A 2020-04-22 2020-04-22 资源文件的打包方法、装置、存储介质和计算机设备 Active CN111443942B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010322852.8A CN111443942B (zh) 2020-04-22 2020-04-22 资源文件的打包方法、装置、存储介质和计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010322852.8A CN111443942B (zh) 2020-04-22 2020-04-22 资源文件的打包方法、装置、存储介质和计算机设备

Publications (2)

Publication Number Publication Date
CN111443942A CN111443942A (zh) 2020-07-24
CN111443942B true CN111443942B (zh) 2024-04-19

Family

ID=71650170

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010322852.8A Active CN111443942B (zh) 2020-04-22 2020-04-22 资源文件的打包方法、装置、存储介质和计算机设备

Country Status (1)

Country Link
CN (1) CN111443942B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114201703A (zh) * 2020-09-18 2022-03-18 华为技术有限公司 一种的生成文件的方法及电子设备
CN113590551B (zh) * 2021-07-30 2023-09-01 广东时谛智能科技有限公司 一种材料数字化扩展格式系统、方法、介质及设备
CN113672597A (zh) * 2021-09-03 2021-11-19 中国银行股份有限公司 数据库跨平台迁移方法、装置、系统和设备
CN114036323A (zh) * 2021-10-12 2022-02-11 深圳智慧林网络科技有限公司 数据压缩方法及装置、存储介质
CN114579135B (zh) * 2022-03-01 2023-09-05 抖音视界有限公司 一种安装包生成方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106022014A (zh) * 2016-05-16 2016-10-12 武汉斗鱼网络科技有限公司 一种资源文件的打包方法和解包方法
CN108509209A (zh) * 2018-04-08 2018-09-07 平安普惠企业管理有限公司 一种资源包的生成方法、装置、计算机设备及存储介质
CN108664254A (zh) * 2018-05-09 2018-10-16 中山市博美科研技术服务有限公司 一种软件打包方法及装置
CN110442374A (zh) * 2019-06-25 2019-11-12 中国电力科学研究院有限公司 用电信息采集终端用软件产品打包方法和装置
CN110955896A (zh) * 2019-10-30 2020-04-03 西安海云物联科技有限公司 一种通过近场通信实现单片机固件安全升级的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10169020B2 (en) * 2017-02-01 2019-01-01 International Business Machines Corporation Software globalization of distributed packages

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106022014A (zh) * 2016-05-16 2016-10-12 武汉斗鱼网络科技有限公司 一种资源文件的打包方法和解包方法
CN108509209A (zh) * 2018-04-08 2018-09-07 平安普惠企业管理有限公司 一种资源包的生成方法、装置、计算机设备及存储介质
CN108664254A (zh) * 2018-05-09 2018-10-16 中山市博美科研技术服务有限公司 一种软件打包方法及装置
CN110442374A (zh) * 2019-06-25 2019-11-12 中国电力科学研究院有限公司 用电信息采集终端用软件产品打包方法和装置
CN110955896A (zh) * 2019-10-30 2020-04-03 西安海云物联科技有限公司 一种通过近场通信实现单片机固件安全升级的方法

Also Published As

Publication number Publication date
CN111443942A (zh) 2020-07-24

Similar Documents

Publication Publication Date Title
CN111443942B (zh) 资源文件的打包方法、装置、存储介质和计算机设备
US10142398B2 (en) Method and system for file transfer over a messaging infrastructure
US11100244B2 (en) File packaging and unpackaging methods, apparatuses, and network devices
US5155484A (en) Fast data compressor with direct lookup table indexing into history buffer
US8698657B2 (en) Methods and systems for compressing and decompressing data
CN103530535A (zh) 一种Android平台应用程序保护的加脱壳方法
US10303783B2 (en) Distributed virtual storage of portable media files
CN111008034B (zh) 一种补丁生成方法及装置
CN112667975B (zh) 一种基于混合加固Android系统应用软件安全防护方法
US20070300206A1 (en) Delta compression using multiple pointers
JP5753946B2 (ja) フォントファイルをダウンロードする方法およびシステム
CN110413711B (zh) 一种差异数据获取方法及其存储介质
US20050154899A1 (en) Mobile software authentication and validation
US11847219B2 (en) Determining a state of a network
CN115509582A (zh) 应用程序发布方法、装置、设备及存储介质
EP3952202B1 (en) A device and a method for performing a cryptographic algorithm
CN114844693B (zh) 轻量级的通信数据加密方法、装置、设备及存储介质
US12061728B2 (en) Content distribution integrity control
CN115687474A (zh) 一种面向PoW区块链的跨链验证系统
CN111859316A (zh) 应用程序的加固方法、装置、设备及存储介质
CN118210785B (zh) 一种基于数据校验的数据库迁移方法及系统
CN111600846B (zh) 一种网关设备的恢复方法和恢复系统
CN116702218B (zh) 小程序中三维模型的渲染方法、装置、终端及存储介质
CN118277628B (zh) 数据访问控制方法、装置、计算机设备及存储介质
CN117891489A (zh) 算法服务的镜像打包方法、装置和计算机可读存储介质

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