專利名稱:多層摘要文件生成方法及文件正確性驗(yàn)證方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)安全領(lǐng)域,尤其涉及大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法以及大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法。
背景技術(shù):
在由成千上萬個CPU構(gòu)成的大規(guī)模并行系統(tǒng)上,應(yīng)用程序要處理的文件數(shù)量和容量非常巨大,盤陣上的文件內(nèi)容被損壞,或者程序運(yùn)行過程中,從盤陣讀入內(nèi)存,或者從內(nèi)存寫入文件時由于I/O的偶發(fā)性錯誤導(dǎo)致的數(shù)據(jù)內(nèi)容出錯,很難被快速檢測出來。目前,傳統(tǒng)的校驗(yàn)文件正確性的手段是利用MD5、shal、des等hash算法來進(jìn)行文件摘要,通過對比摘要就可以發(fā)現(xiàn)文件內(nèi)容是否被破壞。MD5全稱是報文摘要算法(Message-Digest Algorithm 5),此算法對任意長度的信息逐位進(jìn)行計算,產(chǎn)生一個二進(jìn)制長度為128位的“hash值”(或稱“摘要”),不同的文件產(chǎn)生相同的hash值的可能性是非常小的。圖I為利用MD5算法計算hash值的流程圖。如圖I所示,MD5算法以512bit為一個分組,將待計算摘要的數(shù)據(jù)分為η個組。從第一個分組開始,為第一個分組計算一個128bit的hash值。接著,為第二個分組計算一個128bit的hash值,并將第二個分組的hash值累加到第一個分組的hash值上。如此往復(fù),直至第 η個hash值累加值第(η-I)個hash值上。整理輸出最后得到的128bit的hash值(即摘要)。校驗(yàn)文件正確性時,用同樣的算法計算得出128bit的摘要,與之前計算得出的摘要做比較。如果一致,則文件正確;如果不一致,表明文件在I/O過程中出現(xiàn)錯誤。目前Iinux下常用的文件校驗(yàn)工具是md5sum,它是用來計算和校驗(yàn)文件摘要的工具程序。windows下也有md5sum及類似功能的文件摘要軟件。如圖I所示,在計算hash值時,后一分組的hash值會迭加到前一分組的hash值上,前、后hash值具有相關(guān)性。所以,用MD5算法計算摘要,實(shí)質(zhì)上是一個串行計算。所以在大規(guī)模并行系統(tǒng)下,文件數(shù)據(jù)容量非常巨大時,利用MD5算法生成摘要或者進(jìn)行校驗(yàn)變成了一件非常耗時的工作。另外,已有Iinux或者windows下的摘要工具都是靜態(tài)的,不支持應(yīng)用程序中對文件的I/O操作進(jìn)行實(shí)時檢測,無法及時發(fā)現(xiàn)I/O錯誤、盡早避免錯誤擴(kuò)大。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題是在大規(guī)模并行系統(tǒng)上,如何快速實(shí)現(xiàn)對大量文件的完整性驗(yàn)證和大量I/O操作的正確性檢查。為了解決上述問題,本發(fā)明提供了一種大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,包括以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件;用報文摘要算法為每個一級文件,生成一級層間摘要,將所述一級層間摘要保存于所述多層摘要文件中;基于所述一級層間摘要,至少使用一次報文摘要算法,生成總摘要,將所述總摘要保存于所述多層摘要文件中。可選的,所述基于所述一級層間摘要,至少使用一次報文摘要算法,生成總摘要包括使用報文摘要算法為所有一級層間摘要生成總摘要??蛇x的,所述基于所述一級層間摘要,至少使用一次報文摘要算法,生成總摘要包括獲取事先定義的摘要層數(shù)m、第一層Hash塊數(shù)Ii1、第二層Hash塊數(shù)n2、…、第m層Hash 塊數(shù) nm ;當(dāng)所述摘要層數(shù)m大于I時,重復(fù)以下步驟,直至形成所有m級層間摘要
I)將所有i級層間摘要拆分成n (i+1)個(i+1)級文件;1彡i彡(m-1), i為正整數(shù);2)用報文摘要算法為每個(i+Ι)級文件,生成(i+Ι)級層間摘要,將所述(i+Ι)級層間摘要保存于所述多層摘要文件中;3)累加i后從步驟I)開始循環(huán);使用報文摘要算法為所有m級層間摘要生成總摘要。可選的,在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還包括定義所述多層摘要文件的結(jié)構(gòu);所述多層摘要文件的結(jié)構(gòu)包括目標(biāo)文件名、目標(biāo)文件大小、原始Hash塊大小、原始Hash塊數(shù)η、η個一級層間摘要、總摘要??蛇x的,在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還包括定義所述多層摘要文件的結(jié)構(gòu);所述多層摘要文件的結(jié)構(gòu)包括目標(biāo)文件名、目標(biāo)文件大小、摘要層數(shù)m、原始Hash塊大小、第一層Hash塊數(shù)叫、Ii1個一級層間摘要、第二層Hash塊數(shù)n2、n2個二級層間摘要、…、第m層Hash塊數(shù)nm、nm個m級層間摘要、總摘要。可選的,在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還包括為所述多層摘要文件中的目標(biāo)文件名、目標(biāo)文件大小、原始Hash塊大小、原始Hash塊個數(shù)η賦值;所述將一級層間摘要保存于多層摘要文件中包括以所述一級層間摘要為所述多層摘要文件中的η個一級層間摘要賦值;所述將總摘要保存于多層摘要文件中包括以所述總摘要為所述多層摘要文件中的總摘要賦值。可選的,在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還包括為所述多層摘要文件的目標(biāo)文件名、目標(biāo)文件大小、摘要層數(shù)m、原始Hash塊大小、第一層Hash塊數(shù)Ii1、第二層Hash塊數(shù)n2、…、第m層Hash塊數(shù)nm賦值;所述將一級層間摘要保存于多層摘要文件中包括以所述一級層間摘要為所述多層摘要文件中的Ii1個一級層間摘要賦值;所述將(i+Ι)級層間摘要保存于多層摘要文件中包括以所述(i+Ι)級層間摘要為所述多層摘要文件中的n (i+1)個(i+1)級層間摘要賦值;所述將總摘要保存于多層摘要文件中包括以所述總摘要為所述多層摘要文件中的總摘要賦值??蛇x的,生成層間摘要由所述大規(guī)模并行系統(tǒng)下不同的進(jìn)程并行完成??蛇x的,生成總摘要由單一進(jìn)程完成??蛇x的,所述報文摘要算法為MD5算法。本發(fā)明還提供了一種大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法,包括讀取所述文件對應(yīng)的多層摘要文件,獲取原始Hash塊大??;以所述原始Hash塊大小為單位,將所述文件拆分成多個一級文件;用報文摘要算法為每個一級文件,生成一級層間摘要,將所述一級層間摘要與所·述多層摘要文件中對應(yīng)的一級層間摘要進(jìn)行比較,若兩者不一致,則輸出錯誤信息。可選的,在輸出錯誤信息的同時,輸出所述錯誤信息對應(yīng)的一級文件的序號??蛇x的,該方法還包括若所有的一級層間摘要與所述多層摘要文件中對應(yīng)的所有一級層間摘要都一致,則用報文摘要算法為所有一級層間摘要,生成總摘要;將所述總摘要與所述多層摘要文件中對應(yīng)的總摘要進(jìn)行比較;若兩者一致,則輸出正確信息;若兩者不一致,則輸出錯誤信息。可選的,該方法還包括若所有的一級層間摘要與所述多層摘要文件中對應(yīng)的所有一級層間摘要都一致,則獲取所述多層摘要文件中的摘要層數(shù)m、第一層Hash塊數(shù)Ii1、第二層Hash塊數(shù)n2、…、第m層Hash塊數(shù)nm ;當(dāng)所述摘要層數(shù)m大于I時,重復(fù)以下步驟,直至生成所有m級層間摘要I)按照第(i+Ι)層Hash塊數(shù)n (i+1),將所有i級層間摘要拆分成η (如個(i+Ι)級文件;1 ( i ^ (m-1), i為正整數(shù);2)用報文摘要算法為每個(i+Ι)級文件,生成(i+Ι)級層間摘要;3)將所述(i+Ι)級層間摘要與所述多層摘要文件中對應(yīng)的(i+Ι)級層間摘要進(jìn)行比較,若兩者一致,則4)累加i后從步驟I)開始循環(huán);若兩者不一致,則輸出錯誤信息;若所有的m級層間摘要與所述多層摘要文件中對應(yīng)的所有m級層間摘要都一致,則用報文摘要算法為所有m級層間摘要,生成總摘要;將所述總摘要與所述多層摘要文件中對應(yīng)的總摘要進(jìn)行比較;若兩者一致,則輸出正確信息;若兩者不一致,則輸出錯誤信息。 可選的,生成層間摘要由所述大規(guī)模并行系統(tǒng)下不同的進(jìn)程并行完成。可選的,生成總摘要由單一進(jìn)程完成??蛇x的,所述報文摘要算法為MD5算法。與現(xiàn)有技術(shù)相比,本發(fā)明的技術(shù)方案具有以下優(yōu)點(diǎn)I、本發(fā)明分層次地產(chǎn)生層間摘要,各層間摘要可由不同的進(jìn)程并行完畢,再對最底層的層間摘要生成一個總摘要,可充分利用大規(guī)模并行系統(tǒng)的處理能力,大大提高摘要生成速度。對應(yīng)地,在驗(yàn)證文件正確性時,分層次地產(chǎn)生層間摘要,將所得的層間摘要與事先計算過的摘要文件中保存的層間摘要做比較,不一致即報錯,可充分利用大規(guī)模并行系統(tǒng)的處理能力,大大提高文件驗(yàn)證速度。
2、可選方案中,在文件正確性驗(yàn)證過程中,由于一級層間摘要基于文件的分塊進(jìn)行,所以當(dāng)一級文件摘要出錯時,除了可報告錯誤之外,還可將錯誤準(zhǔn)確定位至具體的文件分塊中,及時發(fā)現(xiàn)I/o錯誤,盡早避免錯誤擴(kuò)大。
圖I為現(xiàn)有的MD5算法計算hash值的方法流程圖;圖2為本發(fā)明的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的一具體實(shí)施方式
的流程圖;圖3為本發(fā)明的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的一具體實(shí)施方式
的流程圖;圖4為本發(fā)明的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的第一實(shí)施例、本發(fā)明的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的第一實(shí)施例的摘要文 件結(jié)構(gòu)示意圖;圖5為本發(fā)明的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的第一實(shí)施例的流程圖;圖6為大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的第一實(shí)施例流程圖;圖7為本發(fā)明的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的另一具體實(shí)施方式
的流程圖;圖8為本發(fā)明的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的另一具體實(shí)施方式
的流程圖;圖9為本發(fā)明的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的第二實(shí)施例、本發(fā)明的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的第二實(shí)施例的摘要文件結(jié)構(gòu)示意圖;圖10為本發(fā)明的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的第二實(shí)施例的流程圖;圖11為本發(fā)明的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的第二實(shí)施例的流程圖。
具體實(shí)施例方式在下面的描述中闡述了很多具體細(xì)節(jié)以便于充分理解本發(fā)明。但是本發(fā)明能夠以很多不同于在此描述的其它方式來實(shí)施,本領(lǐng)域技術(shù)人員可以在不違背本發(fā)明內(nèi)涵的情況下做類似推廣,因此本發(fā)明不受下面公開的具體實(shí)施的限制。其次,本發(fā)明利用示意圖進(jìn)行詳細(xì)描述,在詳述本發(fā)明實(shí)施例時,為便于說明,所述示意圖只是實(shí)例,其在此不應(yīng)限制本發(fā)明保護(hù)的范圍。為了解決背景技術(shù)中的技術(shù)問題,本發(fā)明提供了一種大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法。圖2為本發(fā)明的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的一具體實(shí)施方式
的流程圖,本具體實(shí)施方式
中僅形成了一級層間摘要。如圖2所示,本具體實(shí)施方式
包括以下步驟
執(zhí)行步驟S21,以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件。需要說明的是,在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還可包括定義所述多層摘要文件的結(jié)構(gòu)。所述多層摘要文件的結(jié)構(gòu)包括目標(biāo)文件名、目標(biāo)文件大小、原始Hash塊大小、原始Hash塊數(shù)η、η個一級層間摘要、總摘要。在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前、定義所述多層摘要文件的結(jié)構(gòu)之后,還可包括為所述多層摘要文件中的目標(biāo)文件名、目標(biāo)文件大小、原始Hash塊大小、原始Hash塊個數(shù)η賦值。執(zhí)行步驟S22,用報文摘要算法為每個一級文件,生成一級層間摘要,將所述一級層間摘要保存于所述多層摘要文件中。具體地,所述將一級層間摘要保存于多層摘要文件中包括以所述一級層間摘要為所述多層摘要文件中的η個一級層間摘要賦值。所述為每個一級文件,生成一級層間摘要由所述大規(guī)模并行系統(tǒng)下不同的進(jìn)程并行完成。
執(zhí)行步驟S23,用報文摘要算法為所有一級層間摘要,生成總摘要,將所述總摘要保存于所述多層摘要文件中。具體地,所述將總摘要保存于多層摘要文件中包括以所述總摘要為所述多層摘要文件中的總摘要賦值。所述為所有一級層間摘要,生成一個總摘要由單一進(jìn)程完成。需要說明的是,雖然本具體實(shí)施方式
中采用的報文摘要算法為MD5算法,但不應(yīng)理解為對本發(fā)明的具體限定。本領(lǐng)域技術(shù)人員可以理解,本領(lǐng)域現(xiàn)有技術(shù)中的其他報文摘要算法,比如shal、des等,皆可應(yīng)用于本發(fā)明中。對應(yīng)地,本發(fā)明還提供了一種大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法。圖3為本發(fā)明的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的一具體實(shí)施方式
的流程圖,本具體實(shí)施方式
中僅形成了一級層間摘要。如圖3所示,本具體實(shí)施方式
包括以下步驟執(zhí)行步驟S31,讀取所述文件對應(yīng)的多層摘要文件,獲取原始Hash塊大小。執(zhí)行步驟S32,以原始Hash塊大小為單位,將文件拆分成多個一級文件。執(zhí)行步驟S33,用報文摘要算法為每個一級文件,生成一級層間摘要,將所述一級層間摘要與所述多層摘要文件中對應(yīng)的一級層間摘要進(jìn)行比較,若兩者不一致,則輸出錯誤信息,驗(yàn)證結(jié)束。同時,還可輸出所述錯誤信息對應(yīng)的一級文件的序號。所述為每個一級文件,生成一級層間摘要由所述大規(guī)模并行系統(tǒng)下不同的進(jìn)程并行完成。本具體實(shí)施方式
可進(jìn)一步包括執(zhí)行步驟S34,若所有的一級層間摘要與所述多層摘要文件中對應(yīng)的所有一級層間摘要都一致,則用報文摘要算法由單一進(jìn)程為所有一級層間摘要,生成一個總摘要。所述生成總摘要由單一進(jìn)程完成。執(zhí)行步驟S35,將所述總摘要與所述多層摘要文件中對應(yīng)的總摘要進(jìn)行比較;若兩者一致,則輸出正確信息;若兩者不一致,則輸出錯誤信息。需要說明的是,雖然本具體實(shí)施方式
中采用的報文摘要算法為MD5算法,但不應(yīng)理解為對本發(fā)明的具體限定。本領(lǐng)域技術(shù)人員可以理解,本領(lǐng)域現(xiàn)有技術(shù)中的其他報文摘要算法,比如shal、des等,皆可應(yīng)用于本發(fā)明中。下面結(jié)合附圖和具體實(shí)施例對本發(fā)明的技術(shù)方案做進(jìn)一步說明。
圖4為上述大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的第一實(shí)施例以及上述大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的第一實(shí)施例的摘要文件結(jié)構(gòu)示意圖。如圖4所示,本實(shí)施例的摘要文件包括文件名、文件大小、Hash塊大小、Hash塊個數(shù)、Hashl Hashl024共1024個16字節(jié)的hash值(即一級層間摘要)以及一個總Hash值(即總摘要)。在生成多層摘要文件之前,本實(shí)施例已經(jīng)對所述多層摘要文件中的若干內(nèi)容賦值,具體包括本實(shí)施例中的文件名為File,該文件大小為1GB,每個Hash塊大小為IMB, Hash 塊個數(shù)為 1024。圖5為上述大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的第一實(shí)施例的流程圖。如圖5所示,首先按照多層摘要文件中的Hash塊大小1MB,將文件File拆分成1024個一級文件。然后,由互相獨(dú)立的1024個CPU分別讀入一個一級文件,用MD5計算該一級文件的一級層間摘要,保存于多層摘要文件中對應(yīng)的一級層間摘要中。比如CPUi讀入第I個一級文件,用MD5算法計算出第I個一級文件的128bit的一級層間摘要Hashl,保存于所述多 層摘要文件中對應(yīng)的Hashl處。接著,在1024個一級層間摘要Hashl Hashl024都已生成之后,由CPU1收集1024個一級層間摘要,并用MD5為1024個一級層間摘要生成總摘要總Hash值,保存于所述多層摘要文件中對應(yīng)的總Hash值中。計算總摘要僅由CPU1中的單一進(jìn)程完成。至此,文件File的多層摘要文件生成完畢。對應(yīng)地,圖6為上述大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的第一實(shí)施例的流程圖。如圖6所示,首先讀取文件File對應(yīng)的多層摘要文件,獲取原始Hash塊大小為IMB。接著,以IMB為單位,將文件File拆分成1024個一級文件。然后,由互相獨(dú)立的1024個CPU分別讀入一個一級文件,用MD5計算該一級文件的一級層間摘要,將該一級層間摘要與多層摘要文件中對應(yīng)的一級層間摘要進(jìn)行比較。如果兩者不一致,說明該一級文件的I/o發(fā)生錯誤,則輸出錯誤信息,并可同時輸出該一級文件的序號。比如=CPU2讀入第2個一級文件,用MD5算法計算出第2個一級文件的128bit的一級層間摘要Hash2’,將該一級層間摘要Hash2’與多層摘要文件中對應(yīng)的一級層間摘要Hash2進(jìn)行比較。若兩者不同,則表明第2個一級文件在I/O過程中出現(xiàn)了錯誤,則輸出錯誤信息,同時輸出錯誤的一級文件序號2。如果1024個的一級層間摘要與多層摘要文件中對應(yīng)的1024個一級層間摘要都一致,說明所有的一級層間摘要在I/o過程中均正確。理論上,在一級層間摘要都正確的基礎(chǔ)上,總摘要應(yīng)該和多層摘要文件中對應(yīng)的總摘要一致。若出現(xiàn)不一致,也應(yīng)限于總摘要計算錯誤。為了確保驗(yàn)證的完整性,由CPU1收集1024個一級層間摘要Hashl’ Hashl024’,并用MD5為這1024個一級層間摘要生成總摘要總Hash值’,將該總摘要總Hash值’與多層摘要文件中對應(yīng)的總摘要總Hash值進(jìn)行比較。若兩者一致,則輸出驗(yàn)證正確信息。否則,輸出錯誤信息。至此,文件File的正確性已驗(yàn)證完畢。圖7為本發(fā)明的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的另一具體實(shí)施方式
的流程圖。與前一具體實(shí)施方式
相同的部分,此處不再贅述。與前一具體實(shí)施方式
不同的是,本具體實(shí)施方式
中,除了一級層間摘要,還根據(jù)事先定義的摘要層數(shù)m,生成第2層 第m層的層間摘要,保存于所述多層摘要文件中。對應(yīng)地,本具體實(shí)施方式
的摘要文件結(jié)構(gòu)也有所不同,增加了若干內(nèi)容,比如摘要層數(shù)m,以及第2層 第m層的塊數(shù)。如圖7所示,本具體實(shí)施方式
包括以下步驟執(zhí)行步驟S71,以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件。需要說明的是,在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還可包括定義所述多層摘要文件的結(jié)構(gòu)。所述多層摘要文件的結(jié)構(gòu)包括目標(biāo)文件名、目標(biāo)文件大小、摘要層數(shù)m、原始Hash塊大小、第一層Hash塊數(shù)Iipn1個一級層間摘要、第二層Hash塊數(shù)n2、n2個二級層間摘要、…、第m層Hash塊數(shù)nm、nm個m級層間摘要、總摘要。在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前、定義所述多層摘要文件的結(jié)構(gòu)之后,還可包括為所述多層摘要文件的目標(biāo)
文件名、目標(biāo)文件大小、摘要層數(shù)m、原始Hash塊大小、第一層Hash塊數(shù)Ii1、第二層Hash塊數(shù)n2、…、第m層Hash塊數(shù)nm賦值。執(zhí)行步驟S72,用報文摘要算法為每個一級文件,生成一級層間摘要,將所述一級層間摘要保存于所述多層摘要文件中。具體地,所述將一級層間摘要保存于多層摘要文件中包括以所述一級層間摘要為所述多層摘要文件中的Ii1個一級層間摘要賦值。所述為每個一級文件,生成一級層間摘要由所述大規(guī)模并行系統(tǒng)下不同的進(jìn)程并行完成。執(zhí)行步驟S73,獲取事先定義的摘要層數(shù)m、第一層Hash塊數(shù)Ii1、第二層Hash塊數(shù)n2、…、第m層Hash塊數(shù)nm。執(zhí)行步驟S74,為局部變量i賦初值I。執(zhí)行步驟S75,判斷i是否彡(m-1)。若i彡(m-1),即還有層間摘要未生成,則執(zhí)行步驟S76,將所有i級層間摘要拆分成n (i+1)個(i+1)級文件。執(zhí)行步驟S77,用報文摘要算法為每個(i+Ι)級文件,生成一個(i+Ι)級層間摘要,將所述(i+Ι)級層間摘要保存于所述多層摘要文件對應(yīng)的n (i+1)個(i+1)級層間摘要中。具體地,所述將(i+1)級層間摘要保存于多層摘要文件中包括以所述(i+1)級層間摘要為所述多層摘要文件中的n (i+1)個(i+1)級層間摘要賦值。執(zhí)行步驟S78,累加i后,至步驟S75處,循環(huán)執(zhí)行。若i> (m-l),S卩m級的層間摘要均已生成,則執(zhí)行步驟S79,用報文摘要算法為所有m級層間摘要,生成一個總摘要,將所述總摘要保存于所述多層摘要文件對應(yīng)的總摘要中。具體地,所述將總摘要保存于多層摘要文件中包括以所述總摘要為所述多層摘要文件中的總摘要賦值。所述生成一個總摘要由單一進(jìn)程完成。至此,多層摘要文件已生成。需要說明的是,雖然本具體實(shí)施方式
中采用的報文摘要算法為MD5算法,但不應(yīng)理解為對本發(fā)明的具體限定。本領(lǐng)域技術(shù)人員可以理解,本領(lǐng)域現(xiàn)有技術(shù)中的其他報文摘要算法,比如shal、des等,皆可應(yīng)用于本發(fā)明中。對應(yīng)地,圖8為本發(fā)明的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的另一具體實(shí)施方式
的流程圖。與前一具體實(shí)施方式
相同的部分,此處不再贅述。與前一具體實(shí)施方式
不同的是,本具體實(shí)施方式
所采用的多層摘要文件中包括了兩級以上的層間摘要。如圖8所示,本具體實(shí)施方式
包括以下步驟
執(zhí)行步驟S801,讀取所述文件對應(yīng)的多層摘要文件,獲取原始Hash塊大小。執(zhí)行步驟S802,以原始Hash塊大小為單位,將文件拆分成η個一級文件。執(zhí)行步驟S803,用報文摘要算法為每個一級文件,生成一級層間摘要,將所述一級層間摘要與所述多層摘要文件中對應(yīng)的一級層間摘要進(jìn)行比較,若兩者不一致,則輸出錯
誤信息。本具體實(shí)施方式
可進(jìn)一步包括執(zhí)行步驟S804,若所有的一級層間摘要與所述多層摘要文件中對應(yīng)的所有一級層間摘要都一致,即各一級文件均未出錯,則獲取所述多層摘要文件中的摘要層數(shù)m、第一層Hash塊數(shù)Ii1、第二層Hash塊數(shù)n2、…、第m層Hash塊數(shù)nm。執(zhí)行步驟S805,為局部變量i賦初值I?!?zhí)行步驟S806,判讀i是否彡(m-Ι)。若i彡(m-Ι),則執(zhí)行步驟S807,按照第(i+Ι)層Hash塊數(shù)n(i+1),將所有i級層間摘要拆分成n (i+1)個(i+1)級文件。執(zhí)行步驟S808,用報文摘要算法為每個(i+Ι)級文件,生成一個(i+Ι)級層間摘要。執(zhí)行步驟S809,將所述(i+Ι)級層間摘要與所述多層摘要文件中對應(yīng)的(i+Ι)級層間摘要進(jìn)行比較,判斷兩者是否一致。若一致,則執(zhí)行步驟S811,累加i后,至步驟S806處,循環(huán)執(zhí)行。若不一致,則執(zhí)行步驟S810,輸出錯誤信息,驗(yàn)證結(jié)束。若i> (m-l),S卩m層的層間摘要均已生成,若所有的m級層間摘要與所述多層摘要文件中對應(yīng)的所有m級層間摘要都一致,則執(zhí)行步驟S812,用報文摘要算法為所有m級層間摘要,生成一個總摘要。執(zhí)行步驟S813,將所述總摘要與所述多層摘要文件中對應(yīng)的總摘要進(jìn)行比較;若兩者一致,則輸出正確信息;若兩者不一致,則輸出錯誤信息。需要說明的是,本具體實(shí)施方式
中的各層間摘要均可由所述大規(guī)模并行系統(tǒng)下不同的進(jìn)程并行生成,總摘要由單一進(jìn)程生成。需要說明的是,雖然本具體實(shí)施方式
中采用的報文摘要算法為MD5算法,但不應(yīng)理解為對本發(fā)明的具體限定。本領(lǐng)域技術(shù)人員可以理解,本領(lǐng)域現(xiàn)有技術(shù)中的其他報文摘要算法,比如shal、des等,皆可應(yīng)用于本發(fā)明中。下面結(jié)合附圖和具體實(shí)施例對本發(fā)明的技術(shù)方案做進(jìn)一步說明。圖9為上述大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的第二實(shí)施例以及上述大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的第二實(shí)施例的摘要文件結(jié)構(gòu)示意圖。如圖9所示,本實(shí)施例的摘要文件包括文件名、文件大小、層數(shù)、Hash塊大小、第一層Hash塊數(shù)、Hashl Hashl024共1024個16字節(jié)的hash值(即一級層間摘要)、第二層Hash塊數(shù)、Hashl025 Hashl028共4個16字節(jié)的hash值(即二級層間摘要)以及總Hash值(即總摘要)。在生成多層摘要文件之前,本實(shí)施例已經(jīng)對所述多層摘要文件中的若干內(nèi)容賦值,包括本實(shí)施例中的文件名為File,該文件大小為1GB,該文件的層間摘要為2層,Hash塊大小為1MB,第一層Hash塊數(shù)為1024個,第二層Hash塊數(shù)為4個。需要說明的是,雖然本實(shí)施例采用了 2級層間摘要,但本發(fā)明對層間摘要的數(shù)量并不作具體限定,操作人員可根據(jù)文件規(guī)模及運(yùn)算速度的要求自定確定采用幾級層間摘要。圖10為本發(fā)明的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法的第二實(shí)施例的流程圖。如圖10所示,首先按照多層摘要文件中的Hash塊大小1MB,將文件File拆分成1024個一級文件。然后,由互相獨(dú)立的1024個CPU分別用報文摘要算法為該一級文件生成一個一級層間摘要,保存于多層摘要文件中對應(yīng)的一級層間摘要中。比如-CPU1讀入第I個一級文件,用MD5算法計算出第I個一級文件的128bit的一級層間摘要Hashl,保存于所述多層摘要文件中對應(yīng)的Hashl處。接著,在1024個一級層間摘要Hashl Hashl024都已生成之后,獲取事先定義的摘要層數(shù)為2、第一層Hash塊數(shù)為1024、第二層Hash塊數(shù)為4。接著,將1024個一級層間摘要拆分成4 (即第二層Hash塊數(shù))個二級文件。由互相獨(dú)立的4個CPU分別用報文摘要算法為該二級文件生成一個二級層間摘·要,保存于多層摘要文件中對應(yīng)的二級層間摘要中。比如CPU2讀入第2個二級文件,用MD5算法計算出第2個二級文件的128bit的二級層間摘要Hashl026,保存于所述多層摘要文件中對應(yīng)的Hashl026處。然后,由CPU1用MD5為4個二級層間摘要生成總摘要總Hash值,保存于所述多層摘要文件中對應(yīng)的總Hash值中。至此,文件File的多層摘要文件已生成。圖11為本發(fā)明的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法的第二實(shí)施例的流程圖。如圖11所示,首先讀取文件File對應(yīng)的多層摘要文件,獲取原始Hash塊大小為IMB。接著,以IMB為單位,將文件File拆分成1024個一級文件。然后,由互相獨(dú)立的1024個CPU分別讀入一個一級文件,用MD5計算該一級文件的一級層間摘要,將該一級層間摘要與多層摘要文件中對應(yīng)的一級層間摘要進(jìn)行比較。如果兩者不一致,說明該一級文件的I/o發(fā)生錯誤,則輸出錯誤信息,同時輸出該一級文件的序號。比如=CPU2讀入第2個一級文件,用MD5算法計算出第2個一級文件的128bit的一級層間摘要Hash2’,將該一級層間摘要Hash2’與多層摘要文件中對應(yīng)的一級層間摘要Hash2進(jìn)行比較。若兩者不同,則表明第2個一級文件在I/O過程中出現(xiàn)了錯誤,輸出錯誤信息,同時輸出錯誤的一級文件序號2。如果1024個的一級層間摘要與多層摘要文件中對應(yīng)的1024個一級層間摘要都一致,說明所有的一級層間摘要在I/o過程中均正確。接著,獲取多層摘要文件中的摘要層數(shù)
2、第一層Hash塊數(shù)1024、第二層Hash塊數(shù)4。將1024個一級層間摘要拆分成4 (即第二層Hash塊數(shù))個二級文件。由互相獨(dú)立的4個CPU分別讀入一個二級文件,用報文摘要算法為該二級文件生成一個二級層間摘要,將該二級層間摘要與多層摘要文件中對應(yīng)的二級層間摘要進(jìn)行比較。如果兩者不一致,說明該二級文件的I/o發(fā)生錯誤,則輸出錯誤信息。比如CPU2讀入第2個二級文件,用MD5算法計算出第2個二級文件的128bit的二級層間摘要Hashl026’,將該二級層間摘要Hashl026’與多層摘要文件中對應(yīng)的二層間摘要Hashl026進(jìn)行比較。若兩者不同,則表明第2個二級文件在I/O過程中出現(xiàn)了錯誤,輸出錯誤信息。如果4個的二級層間摘要與多層摘要文件中對應(yīng)的4個二級層間摘要都一致,則由CPU1用MD5為4個二級層間摘要生成總摘要總Hash值’,將該總摘要總Hash值’與多層摘要文件中對應(yīng)的總摘要總Hash值進(jìn)行比較。若兩者一致,則輸出驗(yàn)證正確信息。否則,輸出錯誤信息。至此,文件File的正確性已驗(yàn)證完畢。需要說明的是,通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明的部分或全部可借助軟件并結(jié)合必需的通用硬件平臺來實(shí)現(xiàn)?;谶@樣的理解,本發(fā)明的技術(shù)方案本質(zhì)上或者說對現(xiàn)有技術(shù)做出貢獻(xiàn)的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該計算機(jī)軟件產(chǎn)品可包括其上存儲有機(jī)器可執(zhí)行指令的一個或多個機(jī)器可讀介質(zhì),這些指令在由諸如計算機(jī)、計算機(jī)網(wǎng)絡(luò)或其他電子設(shè)備等一個或多個機(jī)器執(zhí)行時可使得該一個或多個機(jī)器根據(jù)本發(fā)明的實(shí)施例來執(zhí)行操作。機(jī)器可讀介質(zhì)可包括,但不限于,軟盤、光盤、CD-ROM (緊致盤-只讀存儲器)、磁光盤、ROM (只讀存儲器)、RAM (隨機(jī)存取存儲器)、EPROM (可擦除可編程只讀存儲器)、EEPROM (電可擦除可編程只讀存儲器)、磁卡或光卡、閃存、或適于存儲機(jī)器可執(zhí)行指令的其他類型的介質(zhì)/機(jī)器可讀介質(zhì)。本發(fā)明可用于眾多通用或?qū)S玫挠嬎阆到y(tǒng)環(huán)境或配置中。例如個人計算機(jī)、服務(wù) 器計算機(jī)、手持設(shè)備或便攜式設(shè)備、平板型設(shè)備、多處理器系統(tǒng)、基于微處理器的系統(tǒng)、置頂盒、可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PC、小型計算機(jī)、大型計算機(jī)、包括以上任何系統(tǒng)或設(shè)備的分布式計算環(huán)境等。本發(fā)明可以在由計算機(jī)執(zhí)行的計算機(jī)可執(zhí)行指令的一般上下文中描述,例如程序模塊。一般地,程序模塊包括執(zhí)行特定任務(wù)或?qū)崿F(xiàn)特定抽象數(shù)據(jù)類型的例程、程序、對象、組件、數(shù)據(jù)結(jié)構(gòu)等等。也可以在分布式計算環(huán)境中實(shí)踐本申請,在這些分布式計算環(huán)境中,由通過通信網(wǎng)絡(luò)而被連接的遠(yuǎn)程處理設(shè)備來執(zhí)行任務(wù)。在分布式計算環(huán)境中,程序模塊可以位于包括存儲設(shè)備在內(nèi)的本地和遠(yuǎn)程計算機(jī)存儲介質(zhì)中。本發(fā)明雖然已以較佳實(shí)施例公開如上,但其并不是用來限定本發(fā)明,任何本領(lǐng)域技術(shù)人員在不脫離本發(fā)明的精神和范圍內(nèi),都可以利用上述揭示的方法和技術(shù)內(nèi)容對本發(fā)明技術(shù)方案做出可能的變動和修改,因此,凡是未脫離本發(fā)明技術(shù)方案的內(nèi)容,依據(jù)本發(fā)明的技術(shù)實(shí)質(zhì)對以上實(shí)施例所作的任何簡單修改、等同變化及修飾,均屬于本發(fā)明技術(shù)方案的保護(hù)范圍。
權(quán)利要求
1.一種大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于,包括 以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件; 用報文摘要算法為每個一級文件,生成一級層間摘要,將所述一級層間摘要保存于所述多層摘要文件中; 基于所述一級層間摘要,至少使用一次報文摘要算法,生成總摘要,將所述總摘要保存于所述多層摘要文件中。
2.如權(quán)利要求I所述的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于,所述基于所述一級層間摘要,至少使用一次報文摘要算法,生成總摘要包括 使用報文摘要算法為所有一級層間摘要生成總摘要。
3.如權(quán)利要求I所述的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于,所述基于所述一級層間摘要,至少使用一次報文摘要算法,生成總摘要包括 獲取事先定義的摘要層數(shù)m、第一層Hash塊數(shù)Ii1、第二層Hash塊數(shù)n2、...、第m層Hash塊數(shù)Iini ; 當(dāng)所述摘要層數(shù)m大于I時,重復(fù)以下步驟,直至形成所有m級層間摘要 1)將所有i級層間摘要拆分成n(i+1)個(i+1)級文件;1彡i彡(m-1), i為正整數(shù); 2)用報文摘要算法為每個(i+1)級文件,生成(i+1)級層間摘要,將所述(i+1)級層間摘要保存于所述多層摘要文件中; 3)累加i后從步驟I)開始循環(huán); 使用報文摘要算法為所有m級層間摘要生成總摘要。
4.如權(quán)利要求2所述的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于,在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還包括定義所述多層摘要文件的結(jié)構(gòu); 所述多層摘要文件的結(jié)構(gòu)包括目標(biāo)文件名、目標(biāo)文件大小、原始Hash塊大小、原始Hash塊數(shù)η、η個一級層間摘要、總摘要。
5.如權(quán)利要求3所述的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于,在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還包括定義所述多層摘要文件的結(jié)構(gòu); 所述多層摘要文件的結(jié)構(gòu)包括目標(biāo)文件名、目標(biāo)文件大小、摘要層數(shù)m、原始Hash塊大小、第一層Hash塊數(shù)Iipn1個一級層間摘要、第二層Hash塊數(shù)n2、n2個二級層間摘要、…、第m層Hash塊數(shù)nm、nm個m級層間摘要、總摘要。
6.如權(quán)利要求4所述的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于 在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還包括為所述多層摘要文件中的目標(biāo)文件名、目標(biāo)文件大小、原始Hash塊大小、原始Hash塊個數(shù)η賦值; 所述將一級層間摘要保存于多層摘要文件中包括以所述一級層間摘要為所述多層摘要文件中的η個一級層間摘要賦值; 所述將總摘要保存于多層摘要文件中包括以所述總摘要為所述多層摘要文件中的總摘要賦值。
7.如權(quán)利要求5所述的大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于在所述以事先定義的原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件之前,還包括為所述多層摘要文件的目標(biāo)文件名、目標(biāo)文件大小、摘要層數(shù)m、原始Hash塊大小、第一層Hash塊數(shù)Ii1、第二層Hash塊數(shù)n2、...、第m層Hash塊數(shù)nm賦值; 所述將一級層間摘要保存于多層摘要文件中包括以所述一級層間摘要為所述多層摘要文件中的Ii1個一級層間摘要賦值; 所述將(i+Ι)級層間摘要保存于多層摘要文件中包括以所述(i+1)級層間摘要為所述多層摘要文件中的n (i+1)個(i+1)級層間摘要賦值; 所述將總摘要保存于多層摘要文件中包括以所述總摘要為所述多層摘要文件中的總摘要賦值。
8.如權(quán)利要求2或3所述的任一種大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于,生成層間摘要由所述大規(guī)模并行系統(tǒng)下不同的進(jìn)程并行完成。
9.如權(quán)利要求2或3所述的任一種大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于,生成總摘要由單一進(jìn)程完成。
10.如權(quán)利要求2或3所述的任一種大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法,其特征在于,所述報文摘要算法為MD5算法。
11.一種大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法,其特征在于,包括 讀取所述文件對應(yīng)的多層摘要文件,獲取原始Hash塊大小; 以所述原始Hash塊大小為單位,將所述文件拆分成多個一級文件; 用報文摘要算法為每個一級文件,生成一級層間摘要,將所述一級層間摘要與所述多層摘要文件中對應(yīng)的一級層間摘要進(jìn)行比較,若兩者不一致,則輸出錯誤信息。
12.如權(quán)利要求11所述的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法,其特征在于,在輸出錯誤信息的同時,輸出所述錯誤信息對應(yīng)的一級文件的序號。
13.如權(quán)利要求11所述的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法,其特征在于,該方法還包括 若所有的一級層間摘要與所述多層摘要文件中對應(yīng)的所有一級層間摘要都一致,則用報文摘要算法為所有一級層間摘要,生成總摘要; 將所述總摘要與所述多層摘要文件中對應(yīng)的總摘要進(jìn)行比較;若兩者一致,則輸出正確信息;若兩者不一致,則輸出錯誤信息。
14.如權(quán)利要求11所述的大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法,其特征在于,該方法還包括 若所有的一級層間摘要與所述多層摘要文件中對應(yīng)的所有一級層間摘要都一致,則獲取所述多層摘要文件中的摘要層數(shù)m、第一層Hash塊數(shù)Ii1、第二層Hash塊數(shù)n2、…、第m層Hash 塊數(shù) nm ; 當(dāng)所述摘要層數(shù)m大于I時,重復(fù)以下步驟,直至生成所有m級層間摘要 O按照第(i+Ι)層Hash塊數(shù)n (i+n,將所有i級層間摘要拆分成n (i+nf(i+l)級文件;I彡i ^ (m-1), i為正整數(shù); 2)用報文摘要算法為每個(i+Ι)級文件,生成(i+Ι)級層間摘要; 3)將所述(i+Ι)級層間摘要與所述多層摘要文件中對應(yīng)的(i+1)級層間摘要進(jìn)行比較,若兩者一致,則4)累加i后從步驟I)開始循環(huán);若兩者不一致,則輸出錯誤信息; 若所有的m級層間摘要與所述多層摘要文件中對應(yīng)的所有m級層間摘要都一致,則用報文摘要算法為所有m級層間摘要,生成總摘要; 將所述總摘要與所述多層摘要文件中對應(yīng)的總摘要進(jìn)行比較;若兩者一致,則輸出正確信息;若兩者不一致,則輸出錯誤信息。
15.如權(quán)利要求13或14所述的任一種大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法,其特征在于,生成層間摘要由所述大規(guī)模并行系統(tǒng)下不同的進(jìn)程并行完成。
16.如權(quán)利要求13或14所述的任一種大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法,其特征在于,生成總摘要由單一進(jìn)程完成。
17.如權(quán)利要求13或14所述的任一種大規(guī)模并行系統(tǒng)下基于多層摘要文件的文件正確性驗(yàn)證方法,其特征在于,所述報文摘要算法為MD5算法。
全文摘要
大規(guī)模并行系統(tǒng)下的多層摘要文件生成方法及文件正確性驗(yàn)證方法。多層摘要文件生成方法包括以原始Hash塊大小為單位,將目標(biāo)文件拆分成多個一級文件;用報文摘要算法為每個一級文件生成一級層間摘要;基于一級層間摘要,至少使用一次報文摘要算法生成總摘要。文件正確性驗(yàn)證方法包括讀取文件對應(yīng)的多層摘要文件,獲取原始Hash塊大??;以原始Hash塊大小為單位,將文件拆分成多個一級文件;用報文摘要算法為每個一級文件生成一級層間摘要,將一級層間摘要與多層摘要文件中對應(yīng)的一級層間摘要進(jìn)行比較,若不一致,則輸出錯誤信息。本發(fā)明可在大規(guī)模并行系統(tǒng)上快速實(shí)現(xiàn)大量文件的正確性檢查。
文檔編號G06F11/00GK102946379SQ20121039476
公開日2013年2月27日 申請日期2012年10月16日 優(yōu)先權(quán)日2012年10月16日
發(fā)明者何王全, 方燕飛, 權(quán)建校, 劉勇, 文延華, 魏迪, 毛興權(quán), 王珊珊 申請人:無錫江南計算技術(shù)研究所