多层摘要文件生成方法及文件正确性验证方法技术

技术编号:8367916 阅读:285 留言:0更新日期:2013-02-28 07:34
大规模并行系统下的多层摘要文件生成方法及文件正确性验证方法。多层摘要文件生成方法包括:以原始Hash块大小为单位,将目标文件拆分成多个一级文件;用报文摘要算法为每个一级文件生成一级层间摘要;基于一级层间摘要,至少使用一次报文摘要算法生成总摘要。文件正确性验证方法包括:读取文件对应的多层摘要文件,获取原始Hash块大小;以原始Hash块大小为单位,将文件拆分成多个一级文件;用报文摘要算法为每个一级文件生成一级层间摘要,将一级层间摘要与多层摘要文件中对应的一级层间摘要进行比较,若不一致,则输出错误信息。本发明专利技术可在大规模并行系统上快速实现大量文件的正确性检查。

【技术实现步骤摘要】

本专利技术涉及网络安全领域,尤其涉及大规模并行系统下的多层摘要文件生成方法以及大规模并行系统下基于多层摘要文件的文件正确性验证方法。
技术介绍
在由成千上万个CPU构成的大规模并行系统上,应用程序要处理的文件数量和容量非常巨大,盘阵上的文件内容被损坏,或者程序运行过程中,从盘阵读入内存,或者从内存写入文件时由于I/O的偶发性错误导致的数据内容出错,很难被快速检测出来。目前,传统的校验文件正确性的手段是利用MD5、shal、des等hash算法来进行文件摘要,通过对比摘要就可以发现文件内容是否被破坏。MD5全称是报文摘要算法(Message-Digest Algorithm 5),此算法对任意长度的信息逐位进行计算,产生一个二进制长度为128位的“hash值”(或称“摘要”),不同的文件产生相同的hash值的可能性是非常小的。图I为利用MD5算法计算hash值的流程图。如图I所示,MD5算法以512bit为一个分组,将待计算摘要的数据分为η个组。从第一个分组开始,为第一个分组计算一个128bit的hash值。接着,为第二个分组计算一个128bit的hash值,并将第二个分组的hash值累加到第一个分组的hash值上。如此往复,直至第 η个hash值累加值第(η-I)个hash值上。整理输出最后得到的128bit的hash值(即摘要)。校验文件正确性时,用同样的算法计算得出128bit的摘要,与之前计算得出的摘要做比较。如果一致,则文件正确;如果不一致,表明文件在I/O过程中出现错误。目前Iinux下常用的文件校验工具是md5sum,它是用来计算和校验文件摘要的工具程序。windows下也有md5sum及类似功能的文件摘要软件。如图I所示,在计算hash值时,后一分组的hash值会迭加到前一分组的hash值上,前、后hash值具有相关性。所以,用MD5算法计算摘要,实质上是一个串行计算。所以在大规模并行系统下,文件数据容量非常巨大时,利用MD5算法生成摘要或者进行校验变成了一件非常耗时的工作。另外,已有Iinux或者windows下的摘要工具都是静态的,不支持应用程序中对文件的I/O操作进行实时检测,无法及时发现I/O错误、尽早避免错误扩大。
技术实现思路
本专利技术所要解决的技术问题是在大规模并行系统上,如何快速实现对大量文件的完整性验证和大量I/O操作的正确性检查。为了解决上述问题,本专利技术提供了一种大规模并行系统下的多层摘要文件生成方法,包括以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件;用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要保存于所述多层摘要文件中;基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要,将所述总摘要保存于所述多层摘要文件中。可选的,所述基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要包括使用报文摘要算法为所有一级层间摘要生成总摘要。可选的,所述基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要包括获取事先定义的摘要层数m、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash 块数 nm ;当所述摘要层数m大于I时,重复以下步骤,直至形成所有m级层间摘要 I)将所有i级层间摘要拆分成n (i+1)个(i+1)级文件;1彡i彡(m-1), i为正整数;2)用报文摘要算法为每个(i+Ι)级文件,生成(i+Ι)级层间摘要,将所述(i+Ι)级层间摘要保存于所述多层摘要文件中;3)累加i后从步骤I)开始循环;使用报文摘要算法为所有m级层间摘要生成总摘要。可选的,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括定义所述多层摘要文件的结构;所述多层摘要文件的结构包括目标文件名、目标文件大小、原始Hash块大小、原始Hash块数η、η个一级层间摘要、总摘要。可选的,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括定义所述多层摘要文件的结构;所述多层摘要文件的结构包括目标文件名、目标文件大小、摘要层数m、原始Hash块大小、第一层Hash块数叫、Ii1个一级层间摘要、第二层Hash块数n2、n2个二级层间摘要、…、第m层Hash块数nm、nm个m级层间摘要、总摘要。可选的,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括为所述多层摘要文件中的目标文件名、目标文件大小、原始Hash块大小、原始Hash块个数η赋值;所述将一级层间摘要保存于多层摘要文件中包括以所述一级层间摘要为所述多层摘要文件中的η个一级层间摘要赋值;所述将总摘要保存于多层摘要文件中包括以所述总摘要为所述多层摘要文件中的总摘要赋值。可选的,在所述以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件之前,还包括为所述多层摘要文件的目标文件名、目标文件大小、摘要层数m、原始Hash块大小、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash块数nm赋值;所述将一级层间摘要保存于多层摘要文件中包括以所述一级层间摘要为所述多层摘要文件中的Ii1个一级层间摘要赋值;所述将(i+Ι)级层间摘要保存于多层摘要文件中包括以所述(i+Ι)级层间摘要为所述多层摘要文件中的n (i+1)个(i+1)级层间摘要赋值;所述将总摘要保存于多层摘要文件中包括以所述总摘要为所述多层摘要文件中的总摘要赋值。可选的,生成层间摘要由所述大规模并行系统下不同的进程并行完成。可选的,生成总摘要由单一进程完成。可选的,所述报文摘要算法为MD5算法。本专利技术还提供了一种大规模并行系统下基于多层摘要文件的文件正确性验证方法,包括读取所述文件对应的多层摘要文件,获取原始Hash块大小;以所述原始Hash块大小为单位,将所述文件拆分成多个一级文件;用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要与所·述多层摘要文件中对应的一级层间摘要进行比较,若两者不一致,则输出错误信息。可选的,在输出错误信息的同时,输出所述错误信息对应的一级文件的序号。可选的,该方法还包括若所有的一级层间摘要与所述多层摘要文件中对应的所有一级层间摘要都一致,则用报文摘要算法为所有一级层间摘要,生成总摘要;将所述总摘要与所述多层摘要文件中对应的总摘要进行比较;若两者一致,则输出正确信息;若两者不一致,则输出错误信息。可选的,该方法还包括若所有的一级层间摘要与所述多层摘要文件中对应的所有一级层间摘要都一致,则获取所述多层摘要文件中的摘要层数m、第一层Hash块数Ii1、第二层Hash块数n2、…、第m层Hash块数nm ;当所述摘要层数m大于I时,重复以下步骤,直至生成所有m级层间摘要I)按照第(i+Ι)层Hash块数n (i+1),将所有i级层间摘要拆分成η (如个(i+Ι)级文件;1 ( i ^ (m-1), i为正整数;2)用报文摘要算法为每个(i+Ι)级文件,生成(i+Ι)级层间摘要;3)将所述(i+Ι)级层间摘要与所述多层摘要文件中对应的(i+Ι)级层间摘要进行比较,若两者一致,则4)累加i后从步骤I)开始循环;若两者不一致,则输出错误信息;若所有的m级层间摘要与所述多层摘本文档来自技高网
...

【技术保护点】
一种大规模并行系统下的多层摘要文件生成方法,其特征在于,包括:以事先定义的原始Hash块大小为单位,将目标文件拆分成多个一级文件;用报文摘要算法为每个一级文件,生成一级层间摘要,将所述一级层间摘要保存于所述多层摘要文件中;基于所述一级层间摘要,至少使用一次报文摘要算法,生成总摘要,将所述总摘要保存于所述多层摘要文件中。

【技术特征摘要】

【专利技术属性】
技术研发人员:何王全方燕飞权建校刘勇文延华魏迪毛兴权王珊珊
申请(专利权)人:无锡江南计算技术研究所
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1