CN102880677A - 一种基于哈希的文件打包和读取方法 - Google Patents

一种基于哈希的文件打包和读取方法 Download PDF

Info

Publication number
CN102880677A
CN102880677A CN2012103339070A CN201210333907A CN102880677A CN 102880677 A CN102880677 A CN 102880677A CN 2012103339070 A CN2012103339070 A CN 2012103339070A CN 201210333907 A CN201210333907 A CN 201210333907A CN 102880677 A CN102880677 A CN 102880677A
Authority
CN
China
Prior art keywords
file
hash
package
path
packing
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
CN2012103339070A
Other languages
English (en)
Other versions
CN102880677B (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.)
Chengdu Xishanju Interactive Entertainment Technology Co Ltd
Zhuhai Kingsoft Digital Network Technology Co Ltd
Original Assignee
Zhuhai Kingsoft Online Game Technology Co Ltd
Chengdu Xishanju Interactive Entertainment 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 Zhuhai Kingsoft Online Game Technology Co Ltd, Chengdu Xishanju Interactive Entertainment Technology Co Ltd filed Critical Zhuhai Kingsoft Online Game Technology Co Ltd
Priority to CN201210333907.0A priority Critical patent/CN102880677B/zh
Publication of CN102880677A publication Critical patent/CN102880677A/zh
Application granted granted Critical
Publication of CN102880677B publication Critical patent/CN102880677B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明公开了一种基于哈希的文件打包和读取方法。该打包方法步骤:依次读取所需打包的文件;计算上述文件路径的哈希值;将文件写入文件数据区;将哈希值与文件的偏移值写入哈希表;完成所有文件的写入操作。该读取方法步骤:通过读入的文件索引信息获取包内文件路径的哈希值;在哈希表中查找对应的偏移值;在文件数据区读取偏移值对应的数据文件。本发明中包内文件标识采用哈希值,查找过程中无需进行字串匹配;索引上采用哈希表,可快速定位偏移地址;并且无法通过包文件还原原始目录结构。本发明作为一种基于哈希的文件打包和读取方法可广泛应用于计算机软件领域。

Description

一种基于哈希的文件打包和读取方法
技术领域
本发明涉及一种文件打包和读取方法,尤其是一种基于哈希的文件打包和读取方法。
背景技术
现有软件客户端资源通常采用打包方式存储,从而获得传输方便、资源保密、以及更加快速访问速度等优点。在打包过程中,由于采用二分或B+树等传统的索引方式,其索引速度还有待提升;同时,由于传统包文件使用文件路径名作为包内文件的唯一标识,索引比较过程中需要进行字串中字符的逐一比较,相对耗时。在读取过程中,由于包文件中索引信息存储了包内文件的路径信息,恶意用户可以通过这些信息完全还原打包前文件的目录结构,这给软件产品带来了安全隐患。
发明内容
为了解决上述技术问题,本发明所采用的技术方案是:一种基于哈希的文件打包方法,打包方法包括以下步骤:
A、依次读取所需打包的文件;
B、计算上述文件路径的哈希值;
C、将上述文件写入包文件中的文件数据区;
D、将文件路径的哈希值与文件的偏移值写入包文件中的哈希表;
E、判断是否读取完所有需打包的文件,若否,则继续执行步骤A,若是,则结束文件的打包。
进一步,步骤B包括以下子步骤:
B1、计算文件路径哈希值;
B2、判断是否哈希冲突;
B3、若不存在哈希冲突,则继续执行步骤C;若存在哈希冲突,则改换哈希算法或者文件路径名称后,回到步骤B1重新执行。 
进一步,包文件中不保存包内文件的路径信息、目录结构或文件名。
为了解决上述技术问题,本发明所采用的另一技术方案是:一种基于哈希的文件读取方法,读取方法包括以下步骤:
F、读取工具从上层应用接收到所需读取的文件的索引信息,通过文件索引信息获取包内文件的路径的哈希值;
G、在哈希表中查找哈希值对应的偏移值;
H、在包文件中的文件数据区读取与偏移值对应的数据文件。
进一步,步骤F中的文件索引信息为包内文件的路径。
进一步,步骤F中的文件索引信息为包内文件的路径的哈希值。
本发明的有益效果是:采用本发明的打包方法,包文件中哈希值唯一标识包内每一个文件,哈希表保存哈希值与偏移值的对应关系,读取包内文件不需要进行字串匹配,仅通过标识文件的哈希值即能从哈希表中快速定位具体包内文件的偏移信息,极大的提高了读取速度。
本发明的另一有益效果是:采用本发明的读取方法,与以往的读取方式相比,读取过程中可以不需要用到文件路径,从而恶意用户无法通过打包后的文件还原出打包前的原始目录结构。
附图说明
图1是本发明中打包后所得到的文件包示意图;
图2是本发明中打包过程的步骤图;
图3是图2所示打包过程中步骤B的子步骤图;
图4是本发明中读取过程的步骤图。
具体实施方式
下面结合附图对本发明的具体实施方式作进一步说明: 
一种基于哈希的文件打包和读取方法,即是通过打包过程和读包过程进而完成对包内文件的写入与读取操作。
参照图1中的包文件,打包过程即将文件写入到包文件中的过程,其通过打包工具完成。打包工具接收如下输入信息:
1、所需打包的文件目录或文件列表;
2、所使用的哈希算法;
3、输出方式和输出位置。
参照图2,一种基于哈希的文件打包方法,所述打包方法包括以下步骤: 
A、依次读取所需打包的文件;
打包工具根据输入信息,从磁盘上读取相应的文件,进而生成相应的文件包。所生成的文件包包含文件数据区和哈希表两个部分。文件数据区为包内文件存储提供场所,其中每个包内文件在文件数据区的位置称为此包内文件的偏移值。
B、计算上述文件路径的哈希值;
哈希表中保存每个哈希值和偏移值的对应关系,用于读包过程中对文件进行快速查找。
C、将文件写入包文件中的文件数据区。
D、将文件路径的哈希值与文件的偏移值写入包文件中的哈希表;
当所有文件都已经写入文件数据区且所有哈希值都不相同时候,则此时将哈希值作为哈希表的关键码。
E、判断是否读取完所有需打包的文件,若否,则继续执行步骤A,若是,则结束文件的打包。
若已经读取完所有需打包的文件,则文件打包过程结束,得到如图1所示的文件包。
参照图3,打包工具根据文件目录或文件列表读取到需要打包的文件,并将读取到的文件写入到文件数据区中,并在此时记录下文件在数据区中的位置,此位置即为此文件的偏移值。之后使用指定的哈希算法,为文件路径计算哈希值。
进一步作为优选的实施方式,所述步骤B包括以下子步骤:
B1、计算文件路径哈希值;
B2、判断是否哈希冲突;
B3、若不存在哈希冲突,则继续执行步骤C;若存在哈希冲突,则改换哈希算法或者文件路径名称后,回到步骤B1重新执行。
若此哈希值与之前所有文件计算过的所有哈希值都不相同,则可将此值作为文件的标识。若此哈希值与之前文件计算过的任意哈希值相同,则要求更换哈希算法或修改被打包的文件路径。否则打包过程无法继续。
进一步作为优选的实施方式,所述包文件中不保存包内文件的路径信息、目录结构或文件名。
参照图4,一种基于哈希的文件读取方法,读包过程通过相应的客户端程序完成,所述读取方法包括以下步骤:
F、读取工具从上层应用接收到所需读取的文件的索引信息,通过文件索引信息获取包内文件的路径的哈希值;
G、在哈希表中查找哈希值对应的偏移值;
H、在包文件中的文件数据区读取偏移值对应的数据文件。
其对包内文件的读取方式分为两种:
1.通过文件路径进行读取;
2.通过文件路径的哈希值进行读取。包文件读取的两种文件索引信息由客户端配置项或参数指定。
进一步作为优选的实施方式,所述步骤F中的文件索引信息为包内文件的路径,所述包内文件的路径的哈希值通过相应哈希算法计算得出。即客户端接收传入的所需读取的文件路径,并使用与打包时相同的哈希算法计算此文件路径的哈希值。经过计算得到哈希值后,即可在哈希表中查找出此包内文件的偏移值。读取偏移值位置的文件,即完成文件读取。
进一步作为优选的实施方式,所述步骤F中的文件索引信息为包内文件的路径的哈希值。采用文件路径的哈希值进行读取,则客户端接收传入所需读取的文件路径哈希值。得到此哈希值后,直接在哈希表中进行查找,即可得此包内文件的偏移值。读取偏移值位置的文件,即完成文件读取。
以上是对本发明的较佳实施进行了具体说明,但本发明创造并不限于所述实施例,熟悉本领域的技术人员在不违背本发明精神的前提下还可以作出种种的等同变换或替换,这些等同的变换或替换均包含在本申请权利要求所限定的范围内。

Claims (6)

1.一种基于哈希的文件打包方法,其特征在于:该打包方法包括以下步骤:
A、依次读取所需打包的文件;
B、计算上述文件路径的哈希值;
C、将上述文件写入包文件中的文件数据区;
D、将文件路径的哈希值与文件的偏移值写入包文件中的哈希表;
E、判断是否读取完所有需打包的文件,若否,则继续执行步骤A,若是,则结束文件的打包。
2.根据权利要求1所述的一种基于哈希的文件打包方法,其特征在于:所述步骤B包括以下子步骤:
B1、计算文件路径哈希值;
B2、判断是否哈希冲突;
B3、若不存在哈希冲突,则继续执行步骤C;若存在哈希冲突,则改换哈希算法或者文件路径名称后,回到步骤B1重新执行。
3. 根据权利要求1或2所述的一种基于哈希的文件打包方法,其特征在于:所述包文件中不保存包内文件的路径信息、目录结构或文件名。
4.一种基于哈希的文件读取方法,其特征在于:该读取方法包括以下步骤:
F、读取工具从上层应用接收到所需读取的文件的索引信息,通过文件索引信息获取包内文件的路径的哈希值;
G、在哈希表中查找哈希值对应的偏移值;
H、在包文件中的文件数据区读取与偏移值对应的数据文件。
5.根据权利要求4所述的一种基于哈希的文件读取方法,其特征在于:所述步骤F中的文件索引信息为包内文件的路径。
6.根据权利要求4所述的一种基于哈希的文件读取方法,其特征在于:所述步骤F中的文件索引信息为包内文件的路径的哈希值。
CN201210333907.0A 2012-09-11 2012-09-11 一种基于哈希的文件打包和读取方法 Active CN102880677B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210333907.0A CN102880677B (zh) 2012-09-11 2012-09-11 一种基于哈希的文件打包和读取方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210333907.0A CN102880677B (zh) 2012-09-11 2012-09-11 一种基于哈希的文件打包和读取方法

Publications (2)

Publication Number Publication Date
CN102880677A true CN102880677A (zh) 2013-01-16
CN102880677B CN102880677B (zh) 2016-04-13

Family

ID=47482003

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210333907.0A Active CN102880677B (zh) 2012-09-11 2012-09-11 一种基于哈希的文件打包和读取方法

Country Status (1)

Country Link
CN (1) CN102880677B (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572876A (zh) * 2014-12-19 2015-04-29 珠海金山网络游戏科技有限公司 一种软件对应配置文件的读取方法和装置
CN106294352A (zh) * 2015-05-13 2017-01-04 姚猛 一种文件处理方法、装置和文件***
CN107402788A (zh) * 2017-07-25 2017-11-28 网易(杭州)网络有限公司 资源打包管理方法与装置
CN107633088A (zh) * 2017-09-29 2018-01-26 深圳市金证科技股份有限公司 一种文件管理方法及装置
CN108509209A (zh) * 2018-04-08 2018-09-07 平安普惠企业管理有限公司 一种资源包的生成方法、装置、计算机设备及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101226546A (zh) * 2008-02-01 2008-07-23 华为技术有限公司 文件的组织、检索方法
CN101373473A (zh) * 2008-09-03 2009-02-25 北京星网锐捷网络技术有限公司 减少嵌入式***闪存中文件数量的方法及***
CN101957861A (zh) * 2010-10-18 2011-01-26 江苏大学 新型元数据服务器集群和基于调整表的元数据管理方法
CN102609509A (zh) * 2010-04-26 2012-07-25 华为技术有限公司 哈希数据处理方法和装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101226546A (zh) * 2008-02-01 2008-07-23 华为技术有限公司 文件的组织、检索方法
CN101373473A (zh) * 2008-09-03 2009-02-25 北京星网锐捷网络技术有限公司 减少嵌入式***闪存中文件数量的方法及***
CN102609509A (zh) * 2010-04-26 2012-07-25 华为技术有限公司 哈希数据处理方法和装置
CN101957861A (zh) * 2010-10-18 2011-01-26 江苏大学 新型元数据服务器集群和基于调整表的元数据管理方法

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104572876A (zh) * 2014-12-19 2015-04-29 珠海金山网络游戏科技有限公司 一种软件对应配置文件的读取方法和装置
CN106294352A (zh) * 2015-05-13 2017-01-04 姚猛 一种文件处理方法、装置和文件***
CN106294352B (zh) * 2015-05-13 2019-10-25 姚猛 一种文件处理方法、装置和文件***
CN107402788A (zh) * 2017-07-25 2017-11-28 网易(杭州)网络有限公司 资源打包管理方法与装置
CN107402788B (zh) * 2017-07-25 2020-09-25 网易(杭州)网络有限公司 资源打包管理方法与装置
CN107633088A (zh) * 2017-09-29 2018-01-26 深圳市金证科技股份有限公司 一种文件管理方法及装置
CN107633088B (zh) * 2017-09-29 2020-04-24 深圳市金证科技股份有限公司 一种文件管理方法及装置
CN108509209A (zh) * 2018-04-08 2018-09-07 平安普惠企业管理有限公司 一种资源包的生成方法、装置、计算机设备及存储介质

Also Published As

Publication number Publication date
CN102880677B (zh) 2016-04-13

Similar Documents

Publication Publication Date Title
EP3561674B1 (en) Method and apparatus for verifying block data in a blockchain
US9292217B2 (en) Logical volume space sharing
CN102880677B (zh) 一种基于哈希的文件打包和读取方法
US8281153B2 (en) Method for indexing encrypted column
CN107728941A (zh) 一种区块链数据压缩方法及***
CN104091129B (zh) 一种数据处理方法及装置
RU2009136008A (ru) Система и способ, использующие виртуальные папки
CN105824881B (zh) 一种基于负载均衡的重复数据删除数据放置方法
US8977662B1 (en) Storing data objects from a flat namespace in a hierarchical directory structured file system
CN106326309A (zh) 一种数据查询方法和装置
WO2014110940A1 (en) A method, apparatus and system for storing, reading the directory index
Liang et al. Mid-model design used in model transition and data migration between relational databases and nosql databases
CN105630834A (zh) 一种实现重复数据删除的方法及装置
CN104834650A (zh) 一种有效查询任务生成方法及***
Cruz et al. A scalable file based data store for forensic analysis
CN104679816A (zh) 一种嵌入式***下的sqlite数据库应用方法
CN107992763B (zh) 一种文件***的掉电保护方法及装置
CN111581647A (zh) 文件加密及解密方法、装置
TW201737065A (zh) 遠端命令的處理方法和裝置
CN106934066A (zh) 一种元数据处理方法、装置和存储设备
CN104537023B (zh) 一种反向索引记录的存储方法及装置
CN105975567A (zh) 一种应用程序的内部文件的处理方法及装置
CN104199929B (zh) 一种元数据之间相互关系描述的方法
WO2008091754A3 (en) System and method for searching a volume of files
CN110110034A (zh) 一种基于图的rdf数据管理方法、装置及存储介质

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
CP03 Change of name, title or address
CP03 Change of name, title or address

Address after: 519000 Room 102, 202, 302 and 402, No. 325, Qiandao Ring Road, Tangjiawan Town, high tech Zone, Zhuhai City, Guangdong Province, Room 102 and 202, No. 327 and Room 302, No. 329

Patentee after: Zhuhai Jinshan Digital Network Technology Co.,Ltd.

Patentee after: CHENGDU XISHANJU INTERACTIVE ENTERTAINMENT TECHNOLOGY Co.,Ltd.

Address before: 519000 Jinshan software building, 8 Lanshan lane, Jida Jingshan Hill Road, Zhuhai, Guangdong

Patentee before: ZHUHAI KINGSOFT ONLINE GAME TECHNOLOGY Co.,Ltd.

Patentee before: CHENGDU XISHANJU INTERACTIVE ENTERTAINMENT TECHNOLOGY Co.,Ltd.