一种文件校验方法及系统.pdf

上传人:b*** 文档编号:1301256 上传时间:2018-04-14 格式:PDF 页数:9 大小:533.28KB
返回 下载 相关 举报
摘要
申请专利号:

CN201611220590.4

申请日:

2016.12.26

公开号:

CN106845278A

公开日:

2017.06.13

当前法律状态:

实审

有效性:

审中

法律详情:

实质审查的生效IPC(主分类):G06F 21/64申请日:20161226|||公开

IPC分类号:

G06F21/64(2013.01)I

主分类号:

G06F21/64

申请人:

武汉斗鱼网络科技有限公司

发明人:

周志刚

地址:

430000 湖北省武汉市武汉东湖开发区软件园东路1号软件产业4.1期B1栋11楼

优先权:

专利代理机构:

北京路浩知识产权代理有限公司 11002

代理人:

汤财宝

PDF下载: PDF下载
内容摘要

本发明提供一种文件校验方法及系统,所述方法通过步骤1,当待校验文件大小小于预设阈值时,计算所述待校验文件的全量MD5值;当待校验文件大小大于预设阈值时,计算所述待校验文件头内容的MD5值和/或尾内容的MD5值;步骤2,基于预先配置的所述待校验文件的MD5值,对所述待校验文件进行一致性校验。从而达到文件一致性的快速校验,从而提升所述文件对应程序启动时的速度;同时后台进程的大文件全量MD5值计算与对比,同时有效的保证了文件校验的准确性。

权利要求书

1.一种文件校验方法,其特征在于,包括:
步骤1,当待校验文件大小小于预设阈值时,计算所述待校验文件的全量MD5值;当待校
验文件大小大于预设阈值时,计算所述待校验文件头内容的MD5值和/或尾内容的MD5值;
步骤2,基于预先配置的所述待校验文件的MD5值,对所述待校验文件进行一致性校验。
2.如权利要求1所述的方法,其特征在于,所述步骤2后还包括:对于大小大于预设阈值
的待校验文件,通过后台进程计算所述待校验文件的全量MD5值,根据所述全量MD5值对所
述待校验文件进行一致性验证。
3.如权利要求1所述的方法,其特征在于,所述步骤1前还包括:计算所述待校验文件的
原始文件的MD5值;
其中,当待校验文件的原始文件大小小于预设阈值时,计算所述待校验文件的原始文
件的全量MD5值;当待校验文件的原始文件大小大于预设阈值时,计算所述待校验文件的原
始文件全量MD5值、头内容的MD5值和/或尾内容的MD5值。
4.如权利要求3所述的方法,其特征在于,所述步骤2中对所述待校验文件进行一致性
校验还包括:
将所述待校验文件的MD5值与所述待校验文件的原始文件MD5值进行比对,判断所述待
校验文件与其原始文件所包含的内容是否一致。
5.如权利要求1所述的方法,其特征在于,所述步骤1还包括:调用Windows中的API函数
获取所述待校验文件内容。
6.如权利要求5所述的方法,其特征在于,所述步骤1中调用Windows中的API函数获取
所述待校验文件内容还包括:
调用API函数CreateFile获取所述待校验文件名;调用API函数GetFileSize获取所述
待校验文件大小;调用API函数CreateFileMapping创建所述待校验文件名内存映射;调用
API函数MapViewOfFile来获取所述待校验文件内容。
7.如权利要求6所述的方法,其特征在于,所述步骤1中调用Windows的文件读取API函
数获取所述待校验文件内容后还包括:
调用MD5函数计算所述待校验文件的MD5值;调用API函数UnmapViewOfFile关闭内存映
射。
8.如权利要求2-7中任一所述方法,其特征在于,所述其中所述预设阈值、文件头内容
大小和文件尾内容大小均为某一存储单位值,且大于等于0。
9.如权利要求8所述的方法,其特征在于,所述预设阈值为1024KB。
10.一种文件校验系统,其特征在于,包括:
MD5值生成模块,与所述校验模块相连,用于当待校验文件大小小于预设阈值时,计算
所述待校验文件的全量MD5值;当待校验文件大小大于预设阈值时,计算所述待校验文件头
内容的MD5值和/或尾内容的MD5值;
校验模块,与所述MD5值生成模块相连,用于基于预先配置的所述待校验文件的MD5值,
对所述待校验文件进行一致性校验。

说明书

一种文件校验方法及系统

技术领域

本发明涉及数据处理技术领域,更具体地,涉及一种文件校验方法及系统。

背景技术

目前,对于Windows客户端软件发布时,会将很多文件一起打包到安装包文件中,
在用户的电脑上安装完软件后,在其安装目录会存在有很多的文件,包括程序所使用的库
文件,包括图片声音等资源文件,包括配置文件等。为了保证程序的正常运行,保证用户电
脑安装的文件都是最新及正确的,那么就需要在程序启动的时候去校验所有的文件。

现有技术解决上述文件完整性校验的方法是利用MD5校验算法来计算每个独立文
件的MD5值(MD5算法可以保证如果文件内容一样那么其MD5值也是一致的),对每个文件去
计算其MD5值对于文件比较大的时候,其耗时会非常大,这样当计算完所有文件后,会将所
有文件的MD5结果发送到服务器来判断文件的MD5是否和服务器正确的一致,如果一致则说
明文件都是正确的完整的。

然而,上述现有技术在对于待校验文件比较多,文件内容比较大的时候,读取整个
文件计算其MD5值会比较耗时,那么程序启动的时候就会比较慢。

发明内容

本发明为克服上述问题或者至少部分地解决上述问题,提供一种文件校验方法及
系统。

根据本发明的一个方面,提供一种文件校验方法,包括:

步骤1,当待校验文件大小小于预设阈值时,计算所述待校验文件的全量MD5值;当
待校验文件大小大于预设阈值时,计算所述待校验文件头内容的MD5值和/或尾内容的MD5
值;

步骤2,基于预先配置的所述待校验文件的MD5值,对所述待校验文件进行一致性
校验。

根据本发明的另一个方面,提供一种文件校验系统,包括:

MD5值生成模块,与所述校验模块相连,用于当待校验文件大小小于预设阈值时,
计算所述待校验文件的全量MD5值;当待校验文件大小大于预设阈值时,计算所述待校验文
件头内容的MD5值和/或尾内容的MD5值;

校验模块,与所述MD5值生成模块相连,用于基于预先配置的所述待校验文件的
MD5值,对所述待校验文件进行一致性校验。

本申请提出一种文件校验方法及系统,所述方法通过步骤1,当待校验文件大小小
于预设阈值时,计算所述待校验文件的全量MD5值;当待校验文件大小大于预设阈值时,计
算所述待校验文件头内容的MD5值和/或尾内容的MD5值;步骤2,基于预先配置的所述待校
验文件的MD5值,对所述待校验文件进行一致性校验。本发明通过以上步骤从而达到文件一
致性的快速校验,从而提升所述文件对应程序启动时的速度;同时后台进程的大文件全量
MD5值计算与对比,同时有效的保证了文件校验的准确性。

附图说明

图1为本发明具体实施例一种文件校验方法的整体流程示意图;

图2为本发明具体实施例一种文件校验系统的整体框架示意图。

具体实施方式

下面结合附图和实施例,对本发明的具体实施方式作进一步详细描述。以下实施
例用于说明本发明,但不用来限制本发明的范围。

现有技术解决上述文件完整性校验的方法是利用MD5校验算法来计算每个独立文
件的MD5值(MD5算法可以保证如果文件内容一样那么其MD5值也是一致的),对每个文件去
计算其MD5值对于文件比较大的时候,其耗时会非常大,这样当计算完所有文件后,会将所
有文件的MD5结果发送到服务器来判断文件的MD5是否和服务器正确的一致,如果一致则说
明文件都是正确的完整的。

MD5即Message-Digest Algorithm 5(信息-摘要算法5),用于确保信息传输完整
一致。是计算机广泛使用的杂凑算法之一(又译摘要算法、哈希算法),主流编程语言普遍已
有MD5实现。将数据(如汉字)运算为另一固定长度值,是杂凑算法的基础原理。

然而,上述现有技术在对于待校验文件比较多,文件内容比较大的时候,读取整个
文件计算其MD5值会比较耗时,那么程序启动的时候就会比较慢。

本申请的创新点在于程序启动的时候,使用更为快速的方法校验文件的正确性和
完整性,这样可以优化校验速度,从而提速软件的启动速度。而将整个文件的MD5计算移动
到程序启动后使用后台线程来计算,这样对整个程序的体检上会好很多。

如图1,本发明一个具体实施例中,示出一种文件校验方法的整体流程示意图,总
体上包括:

步骤1,当待校验文件大小小于预设阈值时,计算所述待校验文件的全量MD5值;当
待校验文件大小大于预设阈值时,计算所述待校验文件头内容的MD5值和/或尾内容的MD5
值;

步骤2,基于预先配置的所述待校验文件的MD5值,对所述待校验文件进行一致性
校验。

本发明另一个具体实施例中,一种文件校验方法,所述步骤2后还包括:

对于大小大于预设阈值的待校验文件,通过后台进程计算所述待校验文件的全量
MD5值,根据所述全量MD5值对所述待校验文件进行一致性验证。

本发明另一个具体实施例中,一种文件校验方法,所述步骤1前还包括:

计算所述待校验文件的原始文件的MD5值;

其中,当待校验文件的原始文件大小小于预设阈值时,计算所述待校验文件的全
量原始文件的MD5值;当待校验文件的原始文件大小大于预设阈值时,计算所述待校验文件
的原始文件全量MD5值、头内容的MD5值和/或尾内容的MD5值。

本发明另一个具体实施例中,一种文件校验方法,所述步骤2中对所述待校验文件
进行一致性校验还包括:

将所述待校验文件的MD5值结果与所述带校验文件的原始文件MD5值结果进行比
对,确认所述待校验文件与其原始文件所包含的内容是否一致。

本发明另一个具体实施例中,一种文件校验方法,所述步骤1还包括:调用Windows
中的API函数获取所述待校验文件内容。

本发明另一个具体实施例中,一种文件校验方法,所述步骤1中调用Windows中的
API函数获取所述待校验文件内容还包括:调用API函数CreateFile获取所述待校验文件
名;调用API函数GetFileSize获取所述待校验文件大小;调用API函数CreateFileMapping
创建所述待校验文件名内存映射;调用API函数MapViewOfFile来获取所述待校验文件内
容。

本发明另一个具体实施例中,一种文件校验方法,所述步骤1中调用Windows的文
件读取API函数获取所述待校验文件内容后还包括:调用MD5函数计算所述待校验文件的
MD5值;调用API函数UnmapViewOfFile关闭内存映射。

本发明另一个具体实施例中,一种文件校验方法,所述其中所述预设阈值、文件头
内容大小和文件尾内容大小均为某一存储单位值,且大于等于0。

本发明另一个具体实施例中,一种文件校验方法,所述预设阈值为1024KB。

如图2,本发明另一个具体实施例中,示出一种文件校验系统整体框架示意图。总
体上,包括:

MD5值生成模块A1,与所述校验模块A2相连,用于当待校验文件大小小于预设阈值
时,计算所述待校验文件的全量MD5值;当待校验文件大小大于预设阈值时,计算所述待校
验文件头内容的MD5值和/或尾内容的MD5值;

校验模块A2,与所述MD5值生成模块A1相连,用于基于预先配置的所述待校验文件
的MD5值,对所述待校验文件进行一致性校验。

接下来,本发明又一个具体实施例中,介绍一种文件校验方法的具体实施步骤。

总体上,包括:步骤1,当待校验文件大小小于预设阈值时,直接计算所述待校验文
件的全量MD5值;当待校验文件大小大于预设阈值时,计算所述待校验文件头m大小内容的
MD5值和/或尾n大小内容的MD5值;其中a、m和n均为某一存储单位值,且大于等于0;步骤2,
根据所述待校验文件的MD5值,对所述待校验文件进行一致性校验。

本实施例是通过一个包括客户端和服务器的系统,客户端去执行计算每个文件的
MD5结果,并将结果上报到服务器,服务器通过事先计算的正确文件的MD5配置文件来对比
客户端的结果的正确性。

配置文件是由多个文件的配置项组成,每一个文件的配置设计如下:

FileName:“xxx”该项是标示文件的名字

FileSize:“xxx”该项是标示文件的大小

FileMd5:“xxx”该项是标示文件的整个内容的MD5值

FileHeadMd5:“xxx”该项是标示文件的头内容的MD5值

FileTailMd5:“xxx”该项是标示文件的尾内容的MD5值

服务器可以事先和客户端的计算MD5的方式一样,获取每个文件的大小、文件的全
内容的MD5值、文件头内容的MD5值,文件尾内容的MD5值。这份配置作为一份标准的正确配
置,客户端上报的结果都来对比这份配置的结果是否一致。

通过上述步骤实现了将多个文件的MD5的校验配置文件,通过配置文件来校验客
户端文件的完整性是否正确。

所述步骤2后还包括:对于大于a的待校验文件,创建后台进程计算所述待校验文
件的全量MD5值,根据所述全量MD5值结果对所述待校验文件进行一致性验证。

调用Windows的文件读取API函数获取所述待校验文件内容还包括:调用API函数
CreateFile获取所述待校验文件名;调用API函数GetFileSize获取所述待校验文件大小;
调用API函数CreateFileMapping创建所述待校验文件名内存映射;调用API函数
MapViewOfFile来获取所述待校验文件内容。

上述步骤具体包括:通过调用Windows的文件读取API函数来读取文件内容,本文
使用内存映射文件的方式来读取文件内容,该方法的好处是在读取非常大的文件时,不会
占用很大的内存,同时效率也会更高。

具体读取文件计算MD5的实现如下:

1、调用API函数CreateFile来获取文件句柄。

通过调用CreateFile来获取到需要计算MD5文件的文件句柄,参数传入文件名。

2、调用API函数GetFileSize来获取文件大小。

通过调用GetFileSize可以获取到该文件的大小,参数需要传入步骤1获取的文件
句柄。

3、调用API函数CreateFileMapping来创建内存映射。

通过调用函数CreateFileMapping可以创建该文件的内存映射。其中比较重要的
参数就是步骤1获取到的文件句柄。

4、调用API函数MapViewOfFile来读取文件内容。

通过步骤3创建了文件映射后,可以通过调用函数MapViewOfFile来读取文件的内
容,


其中参数hFileMappingObject则是步骤3创建的文件映射句柄。

其中参数dwDesiredAccess是文件的访问权限,本文填入FILE_MAP_READ来表示读
取文件内容。

其中参数dwFileOffsetHigh和dwFileOffsetLow是读取文件的偏移。

其中参数dwNumberOfBytesToMap是表示读取文件内容的大小。

而该函数调用成功后,其返回结果就是读取文件内容的起始地址。

5.调用MD5函数来计算MD5值。

通过步骤4读取到了文件内容后,接着使用MD5来对文件内容来计算其MD5的结果。
这样就获取到了文件内容的结果。

6.调用API函数UnmapViewOfFile来关闭内存映射。

当读取完文件内容并计算完MD5后,通过调用API函数UnmapViewOfFile来关闭内
存映射文件。

本文实现快速校验文件MD5的方法是,首先获取一个文件的大小,文件大小的获取
可以使用上面的API函数GetFileSize来获取,然后判断文件大小,如果文件大小小于
1024KB则直接对整个文件计算其MD5值,如果文件大小超过1024KB则读取文件头的10KB来
计算其MD5值,并且读取文件尾部的10KB来计算其MD5值。本方法是考虑到如果读取整个文
件计算MD5会比较耗时,因为他涉及到大量的磁盘IO操作(指从磁盘读取文件的内容),而一
个文件如果发生变化,那么他的文件头信息中会存储文件的整个结构信息,那么这个结构
信息会发生变化,所以计算其文件头的MD5值是比较保险的一个方法,同时也计算文件尾的
MD5值是一个双保险的方式。这样通过对比文件大小,文件头MD5和文件尾MD5都相同则说明
是同一个文件,如果有一个不相等则说明文件内容有被修改。而如果对整个文件内容都计
算MD5则会比较耗时,从而导致程序启动速度比较慢。

至此,通过这一步则对每个文件采用不同的策略来计算每个文件的MD5值,对于大
文件则计算文件头部和尾部,对于小文件则计算整个文件。

编写后台线程计算大文件的全量内容的MD5模块。

当程序启动后通过开始的全文件校验通过后,由于对于非常大的文件采取的是计
算文件头和尾部,所以也存在一些极特殊的情况下,文件内容确实发生了变化,但是文件大
小和文件头尾的MD5值也是一样的,所以为了更准确的对每个文件进行校验,本文则在程序
启动后,创建一个后台线程来独立的对大文件进行全量的内容MD5值计算,具体计算则是通
过步骤(2)的方法来对整个文件进行计算。而后台线程的计算不会影响用户对软件的使用
体验。

至此,通过这一步实现了对文件中的大文件计算全量内容的MD5值,使用后台线程
来计算大文件的MD5值。

编写计算结果上报服务器的模块。

当程序启动的时候,使用快速校验的方法会将所有文件的内容计算其MD5值,而对
于每个文件的结果则打包后上报到服务器。其上报数据包括文件名,文件的头MD5值,文件
尾的MD5值,全文件的MD5值(小文件则是全文件内容的MD5值,大文件则是文件头和文件
尾)。

至此,通过这一步将客户端计算的多个文件的MD5值一起打包上报到服务器。

编写服务器校验模块。

服务器在收到客户端文件计算结果后,服务器将结果和服务器的配置文件的内容
进行比较,判断每个文件的MD5值是否一致,如果一致则说明文内容没有发生变化,如果不
一致则说明文件内容有更改。而对于大文件,则是在创建的后台线程对文件计算的全量的
MD5值,则是对比配置文件中的全量的MD5结果。

通过上面的几个步骤,本文从用户体验角度出发,在程序启动时启动速度影响用
户的体验,所以本文在程序启动时使用快速的校验文件MD5的方法,而在程序启动后,为了
保证校验程序的绝对正确性使用了创建后台线程来对大文件计算其MD5值,从而保证了极
特殊的情况下仅仅计算文件头和文件尾的MD5值不足以保证文件的一致性。

最后,本申请的方法仅为较佳的实施方案,并非用于限定本发明的保护范围。凡在
本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护
范围之内。

一种文件校验方法及系统.pdf_第1页
第1页 / 共9页
一种文件校验方法及系统.pdf_第2页
第2页 / 共9页
一种文件校验方法及系统.pdf_第3页
第3页 / 共9页
点击查看更多>>
资源描述

《一种文件校验方法及系统.pdf》由会员分享,可在线阅读,更多相关《一种文件校验方法及系统.pdf(9页珍藏版)》请在专利查询网上搜索。

本发明提供一种文件校验方法及系统,所述方法通过步骤1,当待校验文件大小小于预设阈值时,计算所述待校验文件的全量MD5值;当待校验文件大小大于预设阈值时,计算所述待校验文件头内容的MD5值和/或尾内容的MD5值;步骤2,基于预先配置的所述待校验文件的MD5值,对所述待校验文件进行一致性校验。从而达到文件一致性的快速校验,从而提升所述文件对应程序启动时的速度;同时后台进程的大文件全量MD5值计算与对比。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 >


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1