发明名称 一种基于二分法和MD5校验的文件远程升级方法
摘要 本发明一种基于二分法和MD5校验的文件远程升级方法,通过将升级服务器上的文件按照固定大小进行分块生成偶数等份组成的主块和剩余部分组成尾块,然后将主块中的每个文件块数据依次生成MD5校验值,之后将相邻两个块的MD5校验值两两成对拼接成字符串再生成上一级MD5校验值,依次类推,直到生成主块最终的MD5校验值为止,将整个过程生成的MD5校验值逆向生成一棵主块MD5校验树,最后对尾块部分独立生成MD5校验值。升级时,将主块的MD5校验树和尾块的MD5校验值发送给客户端,客户端按照相同的方式生成本地文件的主块MD5校验树和尾块MD5校验值,并按照二分法依次进行快速比对,对MD5校验值不相等的文件块进行下载升级。
申请公布号 CN105867934A 申请公布日期 2016.08.17
申请号 CN201610227087.5 申请日期 2016.04.13
申请人 厦门雅迅网络股份有限公司 发明人 王国清;刘志芳;崔跃
分类号 G06F9/44(2006.01)I;G06F9/445(2006.01)I;H04L29/08(2006.01)I 主分类号 G06F9/44(2006.01)I
代理机构 厦门市精诚新创知识产权代理有限公司 35218 代理人 何家富
主权项 一种基于二分法和MD5校验的文件远程升级方法,包括以下步骤:S1、对升级服务器发布的待升级的文件生成升级属性文件:S11、将文件按固定大小分块;假设待升级文件大小为M个字节,分块大小为N个字节,则将文件分割成两部分M1和M2;其中,M1的大小为不大于M的能够偶数倍整除N的最大整数,称之为主块;M2的大小为M‑M1,位于文件的尾部,称之为尾块,其计算公式如下所示:<img file="FDA0000963964150000011.GIF" wi="805" he="247" />式中<img file="FDA0000963964150000012.GIF" wi="146" he="71" />为向下取整运算,“mod”为取余数运算;按照上述公式计算出主块的大小M1和尾块的大小M2之后,将文件进行分块,主块按照N大小进行等分,尾块独立成块;S12、构建主块MD5校验树和尾块MD5校验值:S121、生成尾块的MD5校验值;S122、将主块按照固定大小N进行读取,每读取大小为N的数据生成一个MD5校验值,依次生成所有<img file="FDA0000963964150000013.GIF" wi="109" he="135" />个MD5校验值;S123、将主块中相邻的两个MD5校验值字符串两两成对收尾相接拼接成字符串,对拼接的字符串生成上一级的MD5校验值,并按照此拼接生成MD5校验值的方式向上逐层级重复处理,直至剩下一个MD5校验值为止,最后剩下的MD5校验值称之为主块MD5校验值;S124、将主块生成的MD5校验值按照层级关系,构建成MD5校树,主块MD5校验值为树的根节点;S125、将主块MD5校验值和尾块的MD5校验值收尾相接,拼接成字符串生成最终文件的MD5校验值;S13、生成升级属性文件,其中属性包括分块大小N、分块个数C、文件MD5校验值、尾块大小M2、尾块MD5校验值、主块MD5校验树;S2、客户端向服务器端请求获取升级属性文件中的分块大小N、分块个数C、尾块大小M2以及文件MD5校验值;S3、若升级服务器应答失败,则表示升级失败或者无需升级,升级结束;若升级服务器应答成功,则计算升级文件大小并与本地文件大小进行比较,若文件大小不等,则从升级服务器重新下载完整文件,下载完成之后执行步骤S1按照S2中获取到的分块大小N生成本地升级属性文件,若文件大小相等则进入步骤S4;S4、判断客户端本地升级属性文件是否存在,若本地升级属性文件不存在,则执行步骤S1按照S2中获取到的分块大小N生成本地升级属性文件,然后判断本地升级属性文件中的分块大小与服务器中的分块大小是否相等,若分块大小不相等,则执行步骤S1按照S2中获取到的分块大小N重新生成本地属性文件;之后,比较本地升级属性文件中的文件MD5校验值与待升级的文件MD5校验值相等,若文件MD5校验值相等,则无需升级,升级结束;若文件校验值不相等,则进入步骤S5;S5、客户端向服务端请求主块MD5校验树和尾块MD5校验值;若服务器端应答失败,则升级失败,结束升级流程;若服务器端应答成功,则根据返回结果重建主块MD5校验树,采用二分法与客户端本地主块MD5校验树进行比对,将MD5校验值不相等的文件块的偏移地址连同分块大小N放入待升级块列表中;比较尾块的MD5校验值是否相同,若不同则将尾块大小及偏移地址加入到待升级块列表中,其中尾块分块大小为尾块大小M2,其待升级块偏移地址计算方式为:尾块的待升级块偏移=分块大小N*分块个数C主块MD5校验树和尾块MD5校验值比对完之后进入步骤S6;S6、若带升级块列表为空,则升级完成;否则,客户端根据待升级块列表中的文件偏移地址和分块大小,向升级服务器请求下载对应的文件块,按照偏移地址覆盖写入到客户端本地文件的对应偏移,待所有待升级块列表中的块全部更新完毕之后,则执行步骤S1按照S2中获取到的分块大小N生成本地升级属性文件。
地址 361000 福建省厦门市软件园二期观日路46号