專利名稱:用于文件比較的散列數(shù)據(jù)結(jié)構(gòu)以及散列比較系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明一般地涉及用于數(shù)據(jù)文件的散列技術(shù),更具體地,涉及散列數(shù)據(jù)結(jié)構(gòu)以及利用該散列數(shù)據(jù)結(jié)構(gòu)的散列比較系統(tǒng) 和方法,其將散列值與源文件的唯一特性信息一起使用,因此更快速地進行文件比較。
背景技術(shù):
已經(jīng)在多種操作中使用在多個數(shù)據(jù)(特別是數(shù)據(jù)文件)之間的比較。例如,實質(zhì)上已經(jīng)在多種操作中使用如此的文件比較,從而檢查在操作系統(tǒng)(OS)中的文件之間的變化或者將補丁文件與源文件進行比較從而執(zhí)行預(yù)定的補丁。已經(jīng)使用的傳統(tǒng)文件比較技術(shù)包括比較所有文件的方法、將版本信息分配給文件并且基于版本信息檢查文件的方法、將散列函數(shù)應(yīng)用到文件并且然后比較文件的方法等。因為存在大量的數(shù)據(jù)要比較并且比較的速度緩慢,所以比較所有文件的方法不被頻繁地使用。將版本信息分配給文件并且比較文件的方法的缺陷在于,即使文件的內(nèi)容被改變,文件內(nèi)容也可能不與版本信息匹配,除非文件版本信息被改變,從而由于如此的失配而沒有正確地進行文件比較。因此,在大多數(shù)情形中,通過將散列函數(shù)應(yīng)用到文件而計算散列值,并且通過比較計算的散列值而比較文件的內(nèi)容。然而,僅使用散列值的該傳統(tǒng)比較方法的問題在于,當文件的大小較大時,需要更多的計算資源來生成散列值,并且執(zhí)行相應(yīng)的操作所需的時間增加。
發(fā)明內(nèi)容
因此,本發(fā)明的宗旨是解決現(xiàn)有技術(shù)中出現(xiàn)的以上問題,并且本發(fā)明的目的是提供能夠利用更小量的資源容易地將文件相互比較的散列數(shù)據(jù)結(jié)構(gòu)。本發(fā)明的另一個目的是提供關(guān)于所述結(jié)構(gòu)的散列數(shù)據(jù)結(jié)構(gòu)生成方法和散列數(shù)據(jù)結(jié)構(gòu)比較方法,其可以利用文件比較所需的散列數(shù)據(jù)結(jié)構(gòu)來更加快速地將文件相互比較。本發(fā)明的又一個目的是提供散列比較系統(tǒng),其可以利用文件比較所需的散列數(shù)據(jù)結(jié)構(gòu)來有效地將文件相互比較。根據(jù)實現(xiàn)上述目的的本發(fā)明的方面,提出了一種散列數(shù)據(jù)結(jié)構(gòu),該結(jié)構(gòu)包括由預(yù)定的數(shù)據(jù)比特構(gòu)成的并且與源文件的屬性有關(guān)的文件信息、和由特定數(shù)據(jù)比特構(gòu)成的并且與源文件有關(guān)的散列值,其中,所述散列數(shù)據(jù)結(jié)構(gòu)包括在與文件信息相對應(yīng)的數(shù)據(jù)比特之后的與散列值相對應(yīng)的數(shù)據(jù)比特。在實施方式中,文件信息可以包括所述源文件的大小值、包括所述源文件的開始的數(shù)據(jù)的第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的第二部分數(shù)據(jù)中的至少一個。在實施方式中,所述散列數(shù)據(jù)結(jié)構(gòu)可以進一步包括結(jié)構(gòu)頭部,該結(jié)構(gòu)頭部包括與在該散列數(shù)據(jù)結(jié)構(gòu)中包括的散列值和文件信息中的每一個相關(guān)的結(jié)構(gòu)信息。在實施方式中,所述散列數(shù)據(jù)結(jié)構(gòu)可以進一步包括與該散列數(shù)據(jù)結(jié)構(gòu)相關(guān)的奇偶校驗信息,其中,所述奇偶校驗信息包括用于文件信息的第一奇偶校驗比特和用于散列值的第二奇偶校驗比特。根據(jù)實現(xiàn)上述目的的本發(fā)明的另一個方面,提出了一種用于生成將用來比較源文件的各個散列數(shù)據(jù)的散列數(shù)據(jù)生成方法,該方法包括以下步驟(a)檢查每一個源文件的屬性并且基于經(jīng)檢查的屬性而生成由預(yù)定數(shù)據(jù)比特構(gòu)成的文件信息;(b)通過將散列算法應(yīng)用到所述源文件的至少一部分而計算散列值;以及(C)通過連續(xù)地將所述散列值連接到所述文件信息而生成散列數(shù)據(jù)。在實施方式中,步驟(a)可以包括檢查所述源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的第二部分數(shù)據(jù)中的至少一個;以及,生成包括所述源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的第二部分數(shù)據(jù)中的至少一個的所述文件信息。在實施方式中,該散列數(shù)據(jù)生成方法可以進一步包括步驟(d):生成用于所述散列 數(shù)據(jù)的散列奇偶校驗比特。在實施方式中,步驟(d)可以包括生成用于所述文件信息的第一奇偶校驗比特;生成用于所述散列值的第二奇偶校驗比特;以及通過連續(xù)地連接所述第一奇偶校驗比特和所述第二奇偶校驗比特而生成所述散列奇偶校驗比特。根據(jù)實現(xiàn)上述目的的本發(fā)明的又一個方面,提出了一種用于生成將用來比較源文件的各個散列數(shù)據(jù)的散列數(shù)據(jù)生成方法,該方法包括以下步驟(a)生成包括與在散列數(shù)據(jù)結(jié)構(gòu)中包括的散列值和文件信息中的每一個相關(guān)的結(jié)構(gòu)信息的結(jié)構(gòu)頭部;(b)檢查每一個源文件的屬性并且基于經(jīng)檢查的屬性而生成由預(yù)定數(shù)據(jù)比特構(gòu)成的文件信息;(C)通過將散列算法應(yīng)用到所述源文件的至少一部分而生成散列值;以及(d)通過連續(xù)地將所述散列值連接到所述文件信息而生成散列數(shù)據(jù)。根據(jù)實現(xiàn)上述目的的本發(fā)明的又一個方面,提出了一種用于利用包括文件信息和散列值的散列數(shù)據(jù)將兩個源文件相互比較的散列數(shù)據(jù)比較方法,該方法包括以下步驟
(a)檢查分別與所述兩個源文件相關(guān)聯(lián)的兩個散列數(shù)據(jù);(b)將在所述兩個散列數(shù)據(jù)中包括的兩個文件信息相互比較;以及(C)如果所述兩個文件信息是相同的,則將在所述兩個散列數(shù)據(jù)中包括的兩個散列值相互比較,并且如果所述兩個散列值是相同的,則確定所述兩個源文件是相同的文件。在實施方式中,所述文件信息可以包括相應(yīng)的源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的第二部分數(shù)據(jù)中的至少一個。在實施方式中,步驟(b)可以包括將構(gòu)成所述兩個文件信息的各個數(shù)據(jù)比特相互比較。在實施方式中,步驟(b)可以包括針對所述兩個文件信息中的每一個文件信息,識別在相應(yīng)文件信息中包括的源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的第二部分數(shù)據(jù)中的至少一個;以及,就已經(jīng)被識別的所述源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的第二部分數(shù)據(jù)中的至少一個,相互比較所述兩個文件信息。根據(jù)實現(xiàn)上述目的的本發(fā)明的又一個方面,提出了一種利用包括文件信息、散列值和包括與文件信息和散列值中的每一個相關(guān)的結(jié)構(gòu)信息的結(jié)構(gòu)頭部的散列數(shù)據(jù)將兩個源文件相互比較的散列數(shù)據(jù)比較方法,該方法包括以下步驟(a)將所述兩個源文件的結(jié)構(gòu)頭部相互比較,并且確定散列數(shù)據(jù)是否具有相同的結(jié)構(gòu);(b)如果確定所述散列數(shù)據(jù)具有相同的結(jié)構(gòu),則將分別與兩個源文件相關(guān)聯(lián)的兩個文件信息相互比較;以及(C)如果所述兩個文件信息是相同的,則將分別與兩個源文件相關(guān)聯(lián)的散列值相互比較,并且如果散列值是相同的,則確定所述兩個源文件是相同的文件。根據(jù)實現(xiàn)上述目的的本發(fā)明的又一個方面,提出了一種用于利用包括文件信息和散列值的散列數(shù)據(jù)將源文件相互比較的散列數(shù)據(jù)比較系統(tǒng),該系統(tǒng)包括文件信息生成單元,所述文件信息生成單元被構(gòu)造為檢查每一個源文件的屬性并且生成與所述源文件相關(guān)的文件信息;散列生成單元,所述散列生成單元被構(gòu)造為通過將散列函數(shù)算法應(yīng)用到所述源文件的至少一部分而計算散列值;以及控制單元,所述控制單元被構(gòu)造為針對相應(yīng)源文件生成散列數(shù)據(jù),所述散列數(shù)據(jù)包括所述文件信息和所述散列值。·在實施方式中,所述散列數(shù)據(jù)比較系統(tǒng)可以進一步包括散列文件管理單元,所述散列文件管理單元被構(gòu)造為存儲生成的散列數(shù)據(jù)并且保持與和存儲的散列值相關(guān)聯(lián)的源文件相關(guān)的信息。在實施方式中,所述控制單元可以通過在第一源文件和第二源文件之間順序地比較文件信息和散列值而確定所述第一源文件和所述第二源文件的相同性。在實施方式中,所述控制單元可以生成包括與所述文件信息和所述散列值相關(guān)的識別信息的結(jié)構(gòu)頭部,并且生成包括所述結(jié)構(gòu)頭部、所述文件信息和所述散列值的所述散列數(shù)據(jù)。在實施方式中,所述控制單元可以在所述第一源文件和所述第二源文件之間順序地比較結(jié)構(gòu)頭部、文件信息和散列值,并且然后如果所述第一源文件和所述第二源文件的結(jié)構(gòu)頭部、文件信息和散列值是相同的,則確定所述第一源文件和所述第二源文件是相同的文件。在實施方式中,所述控制單元可以生成用于所述散列數(shù)據(jù)的奇偶校驗比特,所述奇偶校驗比特包括分別為所述文件信息和所述散列值計算的奇偶校驗比特。
根據(jù)下面結(jié)合附圖的詳細描述,本發(fā)明的上述和其它目的以及特征將更加容易理解,其中圖I是示出根據(jù)本發(fā)明的散列數(shù)據(jù)結(jié)構(gòu)的實施方式的參考圖;圖2是示出根據(jù)本發(fā)明的散列數(shù)據(jù)結(jié)構(gòu)的另一個實施方式的參考圖;圖3是示出根據(jù)本發(fā)明的散列數(shù)據(jù)結(jié)構(gòu)的又一個實施方式的參考圖;圖4是示出根據(jù)本發(fā)明的散列比較系統(tǒng)的實施方式的構(gòu)造圖;圖5是示出能夠由圖4的散列比較系統(tǒng)執(zhí)行的散列數(shù)據(jù)生成方法的實施方式的流程圖;圖6是示出能夠由圖4的散列比較系統(tǒng)執(zhí)行的散列數(shù)據(jù)生成方法的另一個實施方式的流程圖;圖7是示出能夠由圖4的散列比較系統(tǒng)執(zhí)行的散列數(shù)據(jù)比較方法的實施方式的流程圖;圖8是示出能夠由圖4的散列比較系統(tǒng)執(zhí)行的散列數(shù)據(jù)比較方法的另一個實施方式的流程圖;以及圖9是示出根據(jù)本發(fā)明的散列比較系統(tǒng)的另一個實施方式的構(gòu)造圖。
具體實施例方式在本發(fā)明中公開的技術(shù)僅是結(jié)構(gòu)或功能描述的實施方式,因此公開的技術(shù)的范圍不應(yīng)該被理解為由本說明書中描述的實施方式所限制。即,實施方式可以以多種形式修改并且可以具有各種形式,從而公開的技術(shù)的范圍應(yīng)該被理解為包括能夠?qū)崿F(xiàn)本發(fā)明的技術(shù) 精神的等價物。同時,在本說明書中描述的術(shù)語的含義應(yīng)該理解如下。諸如“第一”和“第二”這樣的詞語僅用來將一個部件與其它部件區(qū)分,并且本發(fā)明的范圍不應(yīng)該由這些術(shù)語來限制。例如,第一部件可以指定為第二部件,并且以相似的方式,第二部件可以指定為第一部件。在整個說明書中,應(yīng)該理解的是,指示第一部件“連接”到第二部件的描述可以包括其中在第一部件和第二部件之間存在一些其它部件的同時第一部件連接到第二部件的情形,以及其中第一部件“直接地”連接到第二部件的情形。相反,應(yīng)該理解的是,指示第一部件“直接地”連接到第二部件的描述意味著沒有部件插入在第一部件和第二部件之間。同時,說明在部件之間的關(guān)系的其它描述(例如,“在...之間”和“直接地在...之間”或者“與...相鄰”和“直接地與...相鄰”)也可以以相似的方式理解。應(yīng)該理解的是,單數(shù)表述包括復(fù)數(shù)表述,除非在文中具體地指出相反的描述。在本說明書中,應(yīng)該理解的是,諸如“包括”或“具有”這樣的術(shù)語僅旨在指示存在特征、數(shù)字、步驟、操作、部件、部分或其組合,并且不排除將存在或添加一個或更多個其它特征、數(shù)字、步驟、操作、部件、部分或其組合。在各個步驟中的參考符號(例如a、b、c等)用于描述的方便,并且不指示各個步驟的順序,并且各個步驟可以按照與在說明書中描述的順序不同的順序發(fā)生,除非在文中明確地限定步驟的具體順序。即,步驟可以按照與在本說明書中描述的順序相同的順序發(fā)生,或者基本上同時地發(fā)生,或者以相反的順序發(fā)生。除非不同地限定,否者這里使用的包括技術(shù)術(shù)語或科技術(shù)語的所有術(shù)語都具有與本發(fā)明所屬的技術(shù)領(lǐng)域的普通技術(shù)人員一般地所理解的相同含義。與在一般地使用的字典中定義的那些術(shù)語相同的術(shù)語應(yīng)該被理解為具有與現(xiàn)有技術(shù)的上下文含義相同的含義,并且不被解釋為理想的或過度正式的含義,除非它們在本說明書中被明確地定義。在下面的說明中,術(shù)語“源文件”表示如下的文件,該文件是散列數(shù)據(jù)結(jié)構(gòu)將應(yīng)用到的對象。與散列值的典型特性相似地,本發(fā)明提供具有用于各個源文件的獨立值的散列數(shù)據(jù)結(jié)構(gòu)。圖I是示出根據(jù)本發(fā)明的散列數(shù)據(jù)結(jié)構(gòu)的實施方式的參考圖。參考圖1,散列數(shù)據(jù)結(jié)構(gòu)100包括文件信息110和散列值120。更加具體地,散列數(shù)據(jù)結(jié)構(gòu)100可以被構(gòu)造為包括在關(guān)于源文件的文件信息110的數(shù)據(jù)比特之后的與散列值相對應(yīng)的比特。文件信息110可以包括源文件大小值111、包括源文件的開始的數(shù)據(jù)的部分數(shù)據(jù)112 (下文中稱為“第一部分數(shù)據(jù)”)、和包括源文件的最后的數(shù)據(jù)的部分數(shù)據(jù)113 (下文中稱為“第二部分數(shù)據(jù)”)。根據(jù)實施方式,文件信息110可以由上述三種類型的數(shù)據(jù)111到113中的至少一種構(gòu)成。在根據(jù)后面將描述的實施方式的一個或更多個系統(tǒng)中,文件信息110可以被構(gòu)造為具有不同的長度。即,文件信息110不必由特定的數(shù)據(jù)比特構(gòu)成,但是可以根據(jù)系統(tǒng)的設(shè)置或者根據(jù)環(huán)境需要而由與預(yù)定大小對應(yīng)的數(shù)據(jù)比特構(gòu)成。源文件大小值111是指示源文件的大小的數(shù)據(jù)。第一部分數(shù)據(jù)112是自源文件的第一個比特起的與預(yù)定長度相對應(yīng)的源文件的 一部分,第二部分數(shù)據(jù)113是自源文件的最后一個比特起的與預(yù)定長度相對應(yīng)的源文件的一部分。在該情形中,可以根據(jù)相應(yīng)的文件比較系統(tǒng)不同地確定第一部分數(shù)據(jù)112和第二部分數(shù)據(jù)113的長度,從而本發(fā)明不被這些長度限制。散列值120是通過將散列算法應(yīng)用到源文件而獲得的數(shù)據(jù)。在實施方式中,散列值120可以被設(shè)置為具體的比特。S卩,文件信息110被構(gòu)造為使得包括在其中的元素和該元素的大小可以被改變,而散列值120可以被限制為例如標準化大小這樣的具體大小(數(shù)據(jù)比特)。例如,在SHA-O或SHA-I算法的情形中,散列值120可以具有160個比特,在SHA-256/224算法的情形中,散列值可以具有256/224個比特,在SHA-512/384算法的情形中,散列值可以具有512/384個比特。換句話,即使根據(jù)實施方式,散列值120被應(yīng)用到一個或更多個系統(tǒng)中,它也可以由特定長度的數(shù)據(jù)比特構(gòu)成。即,因為散列值優(yōu)選地根據(jù)標準來確定,所以它可以被限制為特定大小的數(shù)據(jù)比特。當比較文件時,文件信息110必須在散列值120之前進行比較。例如,當在下面描述其中期望在文件A到C中搜索文件A的示例時,利用與文件A相關(guān)的文件信息將文件A至IJ C相互比較,因此使得可以識別文件A。在該情形中,因為可以僅利用文件信息110來找到相應(yīng)的文件,所以不必將散列值相互比較,從而可以利用更小量的資源更快速地找到期望的文件。圖2是示出根據(jù)本發(fā)明的散列數(shù)據(jù)結(jié)構(gòu)的另一個實施方式的參考圖。與圖I的實施方式相比,在圖2中示出的散列數(shù)據(jù)結(jié)構(gòu)進一步包括結(jié)構(gòu)頭部130。結(jié)構(gòu)頭部130包括與文件信息110和散列值120的結(jié)構(gòu)相關(guān)的信息。例如,結(jié)構(gòu)頭部130可以包括與文件信息110的比特總數(shù)以及散列值120的比特總數(shù)相關(guān)的信息。在實施方式中,結(jié)構(gòu)頭部130可以包括與用來計算散列值120的散列函數(shù)相關(guān)的信息。例如,結(jié)構(gòu)頭部130可以包括與用來計算相應(yīng)的散列值120的散列函數(shù)(例如SHA-O或SHA-I)相關(guān)的信息。在實施方式中,文件信息110可以僅包括在附圖中示出的三種數(shù)據(jù)111到113中的至少一個,并且結(jié)構(gòu)頭部130可以提供與包括在文件信息110中的數(shù)據(jù)相關(guān)的信息。例如,假設(shè)文件大小信息以及第一部分數(shù)據(jù)和第二部分數(shù)據(jù)被分別表示為A、B和C,文件大小信息具有固定大小的兩個字節(jié),并且結(jié)構(gòu)頭部130由“6AB”構(gòu)成。在該情形中,在結(jié)構(gòu)頭部130中的“6”是指示文件信息110的字節(jié)的總數(shù)的值,并且“AB”指示文件信息110由文件大小信息111和第一部分數(shù)據(jù)112構(gòu)成。在圖2的實施方式中,公開的散列數(shù)據(jù)結(jié)構(gòu)100也可以應(yīng)用到其中具有不同長度的文件信息110由單個系統(tǒng)使用的情形。即,關(guān)于這個的原因是,可以利用結(jié)構(gòu)頭部130單獨地確定用于散列數(shù)據(jù)結(jié)構(gòu)100的元素的比特。圖3是示出根據(jù)本發(fā)明的散列數(shù)據(jù)結(jié)構(gòu)的又一個實施方式的參考圖。與圖I的實施方式相比,在圖3中示出的散列數(shù)據(jù)結(jié)構(gòu)進一步包括奇偶校驗信息140。奇偶校驗信息140包括用于散列數(shù)據(jù)結(jié)構(gòu)100的奇偶校驗值。在實施方式中,奇偶校驗信息140可以包括(i)用于文件信息110的奇偶校驗比特和(ii)用于散列值120的奇偶校驗比特。這打算用來確定各個奇偶校驗值,因為當比較文件時,本發(fā)明可以僅利用文件信息110來完成比較。 當文件的傳輸?shù)劝l(fā)生時,圖3的實施方式可以更加有效地執(zhí)行錯誤檢查以及將文件相互比較。圖4是示出根據(jù)本發(fā)明的散列比較系統(tǒng)的實施方式的構(gòu)造圖。散列比較系統(tǒng)200包括文件信息生成單元210、散列生成單元220、散列文件管理單元230和控制單元250。在實施方式中,散列比較系統(tǒng)200可以進一步包括源文件管理單元 240。文件信息生成單元210可以檢查源文件的屬性并且生成與源文件相關(guān)的文件信息。這里,每一個源文件的屬性可以包括源文件的大小、名稱、格式和部分數(shù)據(jù)比特(例如,自第一個數(shù)據(jù)比特或最后一個數(shù)據(jù)比特起的預(yù)定長度)等。在實施方式中,文件信息生成單元210可以通過自源文件的數(shù)據(jù)比特的第一個比特和最后一個比特起讀取源文件的預(yù)設(shè)長度的數(shù)據(jù)比特而生成上述的第一部分數(shù)據(jù)和第二部分數(shù)據(jù)。在該情形中,預(yù)設(shè)長度可以對應(yīng)于相應(yīng)的散列數(shù)據(jù)結(jié)構(gòu)的第一部分數(shù)據(jù)和第二部分數(shù)據(jù)的大小。散列生成單元220可以通過將散列函數(shù)應(yīng)用到每一個源文件而生成散列值。散列生成單元220可以使用由單個系統(tǒng)使用的散列函數(shù)或者基于標準,例如,基于安全散列算法(SHA)的散列函數(shù)。在實施方式中,散列生成單元220具有多個散列函數(shù)并且能夠響應(yīng)于控制單元250的請求而利用具體的散列函數(shù)來生成用于源文件的散列值。在實施方式中,散列生成單元220可以生成僅用于源文件的一部分的散列值。例如,當源文件的大小等于或大于預(yù)定值時,散列生成單元220可以生成用于與預(yù)設(shè)大小相對應(yīng)的源文件的一部分的散列值。在另一個實施方式中,散列生成單元220還可以生成僅用于除了第一部分數(shù)據(jù)和第二部分數(shù)據(jù)之外的源文件的剩余部分的散列值。散列文件管理單元230可以管理源文件和與源文件相應(yīng)的散列文件(結(jié)構(gòu))。例如,散列文件管理單元230存儲散列文件并且保持與和相應(yīng)的散列文件匹配的源文件相關(guān)的信息(例如,鏈接信息等)。源文件管理單元240可以存儲源文件并且保持每一個源文件的歷史記錄。例如,如果確定由于對文件A進行散列比較,文件A已經(jīng)改變,則相應(yīng)的文件A和其散列歷史記錄可以被存儲在源文件管理單元240中??刂茊卧?50可以通過控制散列比較系統(tǒng)200的總體操作而生成散列數(shù)據(jù)結(jié)構(gòu)或?qū)⒃次募嗷ケ容^。在實施方式中,控制單元250可以生成用于每一個源文件的散列數(shù)據(jù)結(jié)構(gòu)(文件)。更具體地,控制單元250可以將具體的源文件提供到文件信息生成單元210和散列生成單元220 二者,并且利用已經(jīng)響應(yīng)于所述具體的源文件而接收到的散列值和文件信息生成散列數(shù)據(jù)結(jié)構(gòu)。將參考圖5和圖6更加詳細地描述與散列數(shù)據(jù)結(jié)構(gòu)的生成相關(guān)的實施方式。在實施方式中,控制單元250可以利用散列數(shù)據(jù)結(jié)構(gòu)將兩個源文件相互比較。根據(jù)本發(fā)明的散列數(shù)據(jù)結(jié)構(gòu)被分為文件信息和散列值,并且利用如此的結(jié)構(gòu)特征將源文件相互比較。更具體地,控制單元250分析待相互比較的源文件的散列數(shù)據(jù)結(jié)構(gòu),并且通過利用散列數(shù)據(jù)結(jié)構(gòu)的文件信息確定源文件是否是相同的文件。如果確定源文件是相同的文件,則控制單元250通過利用散列數(shù)據(jù)結(jié)構(gòu)的散列值來檢查源文件是否具有相同的內(nèi)容。本發(fā)明首先執(zhí)行利用文件信息確定文件是否是相同的文件的步驟,并且僅如果文件被確定是相同的,然后執(zhí)行在散列值之間進行比較的步驟,因此更加快速地進行比較。在實施方式中,當相互比較文件信息時,控制單元250能夠?qū)?gòu)成所述文件信息的各個數(shù)據(jù)比特相互比較。在另一個實施方式中,控制單元250可以識別構(gòu)成所述文件信息的各個元素,并且可以通過相互比較經(jīng)識別的元素而比較所述文件信息。即,對于每一文件信息,識別包括在相應(yīng)的文件信息中的源文件的大小、名稱、格式、第一部分數(shù)據(jù)和第二部分數(shù)據(jù)中的至少一個,并且經(jīng)識別的元素可以與另一文件信息的元素比較。在實施方式中,控制單元250可以將生成的散列文件和與所述散列文件相關(guān)聯(lián)的源文件信息提供到散列文件管理單元230,從而散列文件可以被管理??刂茊卧?50將生成 的散列文件提供到散列文件管理單元230,從而散列文件被存儲在散列文件管理單元230中。當接收到針對諸如散列比較這樣的另一個操作的請求時,可以從散列文件管理單元230向控制單元250提供與特定源文件相應(yīng)的散列文件,從而可以執(zhí)行預(yù)定的操作。在實施方式中,控制單元250可以控制源文件管理單元240,從而生成源文件的歷史記錄。例如,當針對相同的源文件出現(xiàn)補丁等時,可以要求補丁的歷史記錄。在該示例的情形中,控制單元250 :(i)作為在源文件之間進行比較的結(jié)果,利用文件信息確定源文件是否相同的源文件,并且(ii)如果利用散列值確定文件的內(nèi)容具有變化,則將與相應(yīng)源文件相關(guān)的信息和與散列數(shù)據(jù)結(jié)構(gòu)相關(guān)的信息提供到源文件管理單元240,因此使得可以生成歷史記錄。在實施方式中,控制單元250可以針對每個散列數(shù)據(jù)結(jié)構(gòu)生成結(jié)構(gòu)頭部。更具體地,當分別由文件信息生成單元210和散列生成單元220提供文件信息和散列值時,控制單元250可以針對散列數(shù)據(jù)結(jié)構(gòu)生成結(jié)構(gòu)頭部,從而可以識別文件信息和散列值。例如,控制單元250可以生成包括對在文件信息110中包括的元素、各個元素的數(shù)據(jù)長度、散列值的長度等進行指示的信息的結(jié)構(gòu)頭部。在該實施方式中,當相互比較散列數(shù)據(jù)結(jié)構(gòu)時,控制單元250首先分析結(jié)構(gòu)頭部以識別文件信息和散列值,并且然后基于文件信息確定待比較的兩個源文件是否是相同的文件。如果確定源文件是相同的文件,則控制單元250可以通過將文件的散列值相互比較來確定文件的內(nèi)容是否已經(jīng)改變。在實施方式中,控制單元250可以生成奇偶校驗信息并且將該奇偶校驗信息添加到每一個散列數(shù)據(jù)結(jié)構(gòu)。更具體地,控制單元250可以生成用于文件信息的奇偶校驗比特和用于散列值的奇偶校驗比特,并且可以生成包括上述兩個奇偶校驗比特的奇偶校驗信息。該實施方式可以應(yīng)用到其中在不同的系統(tǒng)之間發(fā)生散列數(shù)據(jù)結(jié)構(gòu)的傳輸?shù)鹊那樾?。針對散列?shù)據(jù)結(jié)構(gòu)的文件信息和散列值兩者,分別計算奇偶校驗比特,從而當將散列數(shù)據(jù)結(jié)構(gòu)相互比較時,可以更加快速地執(zhí)行奇偶校驗操作。圖5是示出能夠由圖4的散列比較系統(tǒng)執(zhí)行的散列數(shù)據(jù)生成方法的實施方式的流程圖。參考圖5,在步驟S510,文件信息生成單元210可以在控制單元250的控制下檢查每一個源文件的屬性。在該情形中,屬性是被收集以生成文件信息的數(shù)據(jù),并且如上所述,可以是文件大小、文件名稱、文件格式、第一部分數(shù)據(jù)或第二部分數(shù)據(jù)等。在步驟S520,文件信息生成單元210可以基于源文件的經(jīng)檢查的屬性生成文件信息。在將散列數(shù)據(jù)相互比較時,文件信息被用來確定被比較的兩個源文件是否是相同的文件。如上所述,文件信息可以包括文件大小、第一部分數(shù)據(jù)或第二部分數(shù)據(jù)中的至少一個??蛇x地,文件信息可以包括文件名稱或文件格式。文件信息生成單元210將生成的文件信息提供到控制單元250。 在步驟S530,散列生成單元220可以在控制單元250的控制下生成與每一個源文件相應(yīng)的散列值。在實施方式中,散列生成單元220可以具有各種散列算法,并且可以利用由控制單元250請求的散列算法來生成用于源文件的散列值。在實施方式中,散列生成單元220可以在控制單元250的控制下僅利用源文件的一部分來生成散列值。散列生成單元220將生成的散列值提供到控制單元250。在步驟S540,控制單元250可以利用文件信息和散列值生成散列數(shù)據(jù)??刂茊卧?50可以通過連續(xù)地將與散列值相應(yīng)的數(shù)據(jù)比特連接到與文件信息相應(yīng)的數(shù)據(jù)比特而生成散列數(shù)據(jù)。在該實施方式中,控制單元250可以事先知道文件信息從第一比特開始直到哪一個比特結(jié)束。因此,當控制單元250執(zhí)行控制使得文件信息生成單元210和散列生成單元220生成文件信息和散列值時,可以針對文件信息和散列值的生成做出如此的請求,包括與數(shù)據(jù)的大小相關(guān)的信息。圖6是示出能夠由圖4的散列比較系統(tǒng)執(zhí)行的散列數(shù)據(jù)生成方法的另一個實施方式的流程圖。圖6的實施方式涉及其中利用上述結(jié)構(gòu)頭部而生成散列數(shù)據(jù)的實施方式。通過將預(yù)定步驟添加到圖5的實施方式而獲得圖6的實施方式,從而將簡略地描述與圖5的實施方式中的步驟相同或相似的那些步驟。參考圖6,在步驟S610,控制單元250可以事先確定要包括在文件信息中的元素。即,控制單元250可以事先確定要包括在文件信息中的元素的類型、元素的大小等,并且保持與文件信息的構(gòu)造相關(guān)的信息。之后,控制單元250可以請求文件信息生成單元210生成文件信息,包括與確定的元素相關(guān)的信息。文件信息生成單元210可以在控制單元250的控制下生成文件信息。即,文件信息生成單元210可以在步驟S620檢查每一個源文件的屬性,在步驟S630利用經(jīng)檢查的屬性生成文件信息,并且將文件信息提供到控制單元250。在步驟S640,散列生成單元220可以在控制單元250的控制下生成用于源文件的散列值,并且將該散列值提供到控制單元250。在步驟S650,控制單元250可以生成關(guān)于文件信息和散列值的結(jié)構(gòu)頭部。如上所述,結(jié)構(gòu)頭部可以包括與散列數(shù)據(jù)的結(jié)構(gòu)相關(guān)的信息。關(guān)于使用結(jié)構(gòu)頭部的原因在于,本發(fā)明將來自散列數(shù)據(jù)中的文件信息和散列值分離,并且然后單獨地對文件信息和散列值的每一個做比較。在實施方式中,控制單元250可以在文件信息和散列值已經(jīng)被生成之前生成結(jié)構(gòu)頭部。即,因為當在文件信息和散列值的生成被請求的情況下文件信息和散列值的構(gòu)造(例如,文件信息的元素、文件信息的大小和散列值的大小等)也被請求時,即使還沒有接收到文件信息和散列值,結(jié)構(gòu)頭部也可以被生成,所以該操作是可能的。在另一個實施方式中,控制單元250可以單獨地接收文件信息和散列值,并且之后生成關(guān)于它們的結(jié)構(gòu)頭部。即,當文件信息生成單元210和散列生成單元220分別獨立地生成文件信息和散列值時,控制單元250可以分開地接收文件信息和散列值,并且可以生成結(jié)構(gòu)頭部。一旦已經(jīng)生成結(jié)構(gòu)頭部,控制單元250可以在步驟S660基于結(jié)構(gòu)頭部、文件信息和散列值生成散列數(shù)據(jù)。圖7是示出能夠由圖4的散列比較系統(tǒng)執(zhí)行的散列數(shù)據(jù)比較方法的實施方式的流程圖。在圖7中所示的散列數(shù)據(jù)比較方法是與在圖5中所示的散列數(shù)據(jù)生成方法相對應(yīng)的實施方式。 參考圖7,在步驟S710,控制單元250可以選擇分別與待比較的兩個源文件相關(guān)聯(lián)的散列數(shù)據(jù)。在包括散列文件管理單元230的實施方式的情形中,控制單元250可以向散列文件管理單元230請求關(guān)于待比較的兩個源文件的散列數(shù)據(jù),并且從散列文件管理單元230獲取所述散列數(shù)據(jù)。在步驟S720,控制單元250可以檢驗兩個選擇的散列數(shù)據(jù)的構(gòu)造。S卩,控制單元250可以檢驗每一個散列數(shù)據(jù)的哪些部分分別對應(yīng)文件信息和散列值。在步驟S730,控制單元250能夠?qū)ㄔ谒鰞蓚€散列數(shù)據(jù)中的文件信息相互比較,并且然后首先確定兩個源文件是否是相同的文件。例如,當文件名稱、文件長度等包括在文件信息中時,可以利用文件信息首先確定兩個源文件是否是相同的文件,然后可以確定文件內(nèi)容。本發(fā)明被構(gòu)造為關(guān)于想要比較的兩個文件是否是相同的文件來確定對象的相同性,并且如果文件被確定是相同的對象,則關(guān)于兩個對象的內(nèi)容是否是相同的來確定對象內(nèi)容的相同性,因此完成了比較。如果在步驟S740,所述兩個文件信息是相同的(在“是”的情形中),則控制單元250可以在步驟S750將與所述兩個源文件相關(guān)聯(lián)的散列值相互比較。如果在步驟S760散列值也是相同的(在“是”的情形中),則在步驟S770確定所述兩個源文件是相同的文件。如果在步驟S740,所述兩個文件信息彼此是不同的(在“否”的情形中),或者在步驟S760散列值彼此是不同的(在“否”的情形中),則可以在步驟S771確定所述兩個源文件是不同的文件。在上述步驟,當將文件信息或散列值相互比較時,控制單元250可以通過檢查相應(yīng)的待比較的對象的數(shù)據(jù)比特而進行比較。因此,如果僅利用文件信息來確定源文件是不同的文件,則數(shù)據(jù)比特的數(shù)量被顯著減小。因此,當必須按照1:N的關(guān)系進行比較時,例如,當進行在多個文件當中找到與特定源文件相同的文件的操作時,本發(fā)明可以有效地進行比較。圖8是示出能夠由圖4的散列比較系統(tǒng)執(zhí)行的散列數(shù)據(jù)比較方法的另一個實施方式的流程圖。在圖8中所示的散列數(shù)據(jù)比較方法是與在圖6中所示的散列數(shù)據(jù)生成方法相對應(yīng)的實施方式,其中,在圖8中所示的散列數(shù)據(jù)進一步包括結(jié)構(gòu)頭部。因此,在該實施方式中,將簡略地描述與圖7中所示的實施方式中的步驟相同或相似的那些步驟。參考圖8,在步驟S810,控制單元250可以選擇分別與待比較的兩個源文件相關(guān)聯(lián)的散列數(shù)據(jù)。在步驟S820,控制單元250可以檢查兩個選擇的散列數(shù)據(jù)的結(jié)構(gòu)頭部,并且然后分析結(jié)構(gòu)頭部。如上所述,因為每一個結(jié)構(gòu)頭部包括在相應(yīng)的散列數(shù)據(jù)中包括的文件信息的內(nèi)容和長度、散列值的長度等,所以控制單元250可以通過分析結(jié)構(gòu)頭部而識別散列數(shù)據(jù)的各個元素??刂茊卧?50將所述兩個散列數(shù)據(jù)的結(jié)構(gòu)頭部相互比較,并且如果結(jié)構(gòu)頭部是相同的(在步驟S830為“是”的情形),則在步驟S840可以識別在各個散列數(shù)據(jù)中包括的文件信息和散列值。在步驟S850,控制單元250能夠?qū)ㄔ谒鰞蓚€散列數(shù)據(jù)中的文件信息相互比·較,并且然后首先確定兩個源文件是否是相同的文件。如果在步驟S860,所述兩個文件信息是相同的(在“是”的情形中),則控制單元250可以在步驟S870將分別與所述兩個源文件相關(guān)聯(lián)的散列值相互比較。如果在步驟S880散列值是相同的(在“是”的情形中),則在步驟S890確定所述兩個源文件是相同的文件。如果在步驟S830結(jié)構(gòu)頭部是彼此不同的(在“否”的情形中),如果在步驟S860文件信息是彼此不同的(在“否”的情形中),或者在步驟S880散列值是彼此不同的(在“否”的情形中),則在步驟S891可以確定所述兩個源文件是不同的文件。在圖8中所示的實施方式可以利用結(jié)構(gòu)頭部識別構(gòu)成散列數(shù)據(jù)的文件信息和散列值。在文件信息和散列值被不同地應(yīng)用的系統(tǒng)中,該實施方式可以更加有效。而且,在步驟S830,因為利用結(jié)構(gòu)頭部本身可以確定文件的相同性,所以可以更加快速和準確地確定文件的相同性,因此有效地做出比較。圖9是示出根據(jù)本發(fā)明的散列比較系統(tǒng)的另一個實施方式的構(gòu)造圖。在圖9中所示的散列比較系統(tǒng)是能夠應(yīng)用到其中以1:N的關(guān)系相互比較文件的情形的實施方式。該系統(tǒng)被構(gòu)造為首先僅將文件信息相互比較,利用具有相同文件信息的文件生成第一比較組,并且僅將屬于第一比較組的文件的散列值相互比較。參考圖9,散列比較系統(tǒng)200包括文件信息生成單元210、散列生成單元220、控制單元250和散列比較單元260。在實施方式中,散列比較系統(tǒng)200可以進一步包括散列文件管理單元230和源文件管理單元240中的至少一個。在圖9中所示的實施方式的描述中,將省略或簡略地進行與圖4的實施方式中的部件相同或相似的部件的描述??刂茊卧?50能夠從對象文件組B中選擇與源文件A相同的文件。為此,控制單元250能夠選擇與在對象文件組B中包括的所有文件相關(guān)聯(lián)的散列數(shù)據(jù),選擇源文件A的散列數(shù)據(jù),以及將選擇的散列數(shù)據(jù)相互比較。在比較中,控制單元250能夠?qū)⒚恳粋€散列數(shù)據(jù)分為文件信息和散列值,并且首先僅將文件信息相互比較。即,控制單元250能夠?qū)⒃次募嗀的文件信息與在對象文件組B中包括的對象文件的文件信息比較,分類具有相同文件信息的對象文件,并且然后生成第一比較組。之后,控制單元250能夠利用散列比較單元260將在第一比較組中包括的對象文件的散列值與源文件A的散列值比較,并且然后確定相同的文件。散列比較單元260能夠在控制單元250的控制下僅將散列值相互比較。在公開的實施方式中,散列比較單元260被設(shè)置為單獨地僅對散列值做比較,因此在其中要求以1:N的關(guān)系進行搜素的情形中更加有效地執(zhí)行比較。根據(jù)在本發(fā)明中公開的技術(shù),可以在將文件的散列值相互比較之前確定文件是否相互不同,從而不必比較不同文件的所有散列數(shù)據(jù),因此獲得能夠更加快速地將文件相互比較的優(yōu)點。此外,在本發(fā)明公開的技術(shù)的優(yōu)點在于,能夠利用由用于文件信息的奇偶校驗比特和用于散列值的奇偶校驗比特構(gòu)成的奇偶校驗信息來檢驗是否已經(jīng)正確地構(gòu)造文件信息和散列數(shù)據(jù)結(jié)構(gòu)中的每一個。雖然已經(jīng)將本發(fā)明的優(yōu)選實施方式公開用于示例性目的,但是本領(lǐng)域技術(shù)人員將理解的是,在不脫離如在隨附權(quán)利要求書中公開的本發(fā)明的范圍和精神的情況下,各種修·改、添加和替換是可能的。
權(quán)利要求
1.一種用于生成將用來比較源文件的各個散列數(shù)據(jù)的散列數(shù)據(jù)生成方法,該方法包括以下步驟 (a)檢查每一個源文件的屬性并且基于經(jīng)檢查的屬性而生成由預(yù)定數(shù)據(jù)比特構(gòu)成的文件信息; (b)通過將散列算法應(yīng)用到所述源文件的至少一部分而計算散列值;以及 (C)通過連續(xù)地將所述散列值連接到所述文件信息而生成散列數(shù)據(jù)。
2.根據(jù)權(quán)利要求I所述的散列數(shù)據(jù)生成方法,其中,步驟(a)包括 檢查所述源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的第二部分數(shù)據(jù)中的至少一個;以及 生成包括所述源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的所述第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的所述第二部分數(shù)據(jù)中的至少一個的所述文件信息。
3.根據(jù)權(quán)利要求I所述的散列數(shù)據(jù)生成方法,該方法進一步包括步驟(d):生成用于所述散列數(shù)據(jù)的散列奇偶校驗比特。
4.根據(jù)權(quán)利要求3所述的散列數(shù)據(jù)生成方法,其中,步驟(d)包括 生成用于所述文件信息的第一奇偶校驗比特; 生成用于所述散列值的第二奇偶校驗比特;以及 通過連續(xù)地連接所述第一奇偶校驗比特和所述第二奇偶校驗比特而生成所述散列奇偶校驗比特。
5.一種用于利用包括文件信息和散列值的散列數(shù)據(jù)將兩個源文件相互比較的散列數(shù)據(jù)比較方法,該方法包括以下步驟 Ca)檢查分別與所述兩個源文件相關(guān)聯(lián)的兩個散列數(shù)據(jù); (b)將在所述兩個散列數(shù)據(jù)中包括的兩個文件信息相互比較;以及 (c)如果所述兩個文件信息是相同的,則將在所述兩個散列數(shù)據(jù)中包括的兩個散列值相互比較,并且如果所述兩個散列值是相同的,則確定所述兩個源文件是相同的文件。
6.根據(jù)權(quán)利要求5所述的散列數(shù)據(jù)比較方法,其中,所述文件信息包括相應(yīng)源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的第二部分數(shù)據(jù)中的至少一個。
7.根據(jù)權(quán)利要求6所述的散列數(shù)據(jù)比較方法,其中,步驟(b)包括將構(gòu)成所述兩個文件信息的各個數(shù)據(jù)比特相互比較。
8.根據(jù)權(quán)利要求6所述的散列數(shù)據(jù)比較方法,其中,步驟(b)包括 針對所述兩個文件信息中的每一個文件信息,識別在相應(yīng)文件信息中包括的源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的第二部分數(shù)據(jù)中的至少一個;以及 就已經(jīng)被識別的所述源文件的大小、名稱以及格式、包括所述源文件的開始的數(shù)據(jù)的所述第一部分數(shù)據(jù)和包括所述源文件的最后的數(shù)據(jù)的所述第二部分數(shù)據(jù)中的至少一個,將所述兩個文件信息相互比較。
9.一種用于利用包括文件信息和散列值的散列數(shù)據(jù)將源文件相互比較的散列數(shù)據(jù)比較系統(tǒng),該系統(tǒng)包括文件信息生成單元,所述文件信息生成單元被構(gòu)造為檢查每一個源文件的屬性并且生成與所述源文件相關(guān)的文件信息; 散列生成單元,所述散列生成單元被構(gòu)造為通過將散列函數(shù)算法應(yīng)用到所述源文件的至少一部分而計算散列值;和 控制單元,所述控制單元被構(gòu)造為針對相應(yīng)源文件生成散列數(shù)據(jù),所述散列數(shù)據(jù)包括所述文件信息和所述散列值。
10.根據(jù)權(quán)利要求9所述的散列數(shù)據(jù)比較系統(tǒng),該系統(tǒng)進一步包括散列文件管理單元,所述散列文件管理單元被構(gòu)造為存儲生成的散列數(shù)據(jù)并且保持與和存儲的散列值相關(guān)聯(lián)的源文件相關(guān)的信息。
11.根據(jù)權(quán)利要求9所述的散列數(shù)據(jù)比較系統(tǒng),其中,所述控制單元通過在第一源文件和第二源文件之間順序地比較文件信息和散列值而確定所述第一源文件和所述第二源文件的相同性。
12.根據(jù)權(quán)利要求9所述的散列數(shù)據(jù)比較系統(tǒng),其中,所述控制單元生成包括與所述文件信息和所述散列值相關(guān)的識別信息的結(jié)構(gòu)頭部,并且生成包括所述結(jié)構(gòu)頭部、所述文件信息和所述散列值的所述散列數(shù)據(jù)。
13.根據(jù)權(quán)利要求12所述的散列數(shù)據(jù)比較系統(tǒng),其中,所述控制單元在第一源文件和第二源文件之間順序地比較結(jié)構(gòu)頭部、文件信息和散列值,然后如果所述第一源文件和所述第二源文件的結(jié)構(gòu)頭部、文件信息和散列值是相同的,則確定所述第一源文件和所述第二源文件是相同的文件。
14.根據(jù)權(quán)利要求9所述的散列數(shù)據(jù)比較系統(tǒng),其中,所述控制單元生成用于所述散列數(shù)據(jù)的奇偶校驗比特,所述奇偶校驗比特包括分別為所述文件信息和所述散列值計算的奇偶校驗比特。
全文摘要
本發(fā)明涉及用于文件比較的散列數(shù)據(jù)結(jié)構(gòu)以及散列比較系統(tǒng)和方法。一種根據(jù)實施方式的散列數(shù)據(jù)比較系統(tǒng)利用包括文件信息和散列值的散列數(shù)據(jù)將源文件相互比較。該散列數(shù)據(jù)比較系統(tǒng)包括文件信息生成單元、散列生成單元和控制單元。文件信息生成單元檢查每一個源文件的屬性并且生成與源文件相關(guān)的文件信息。散列生成單元通過將散列函數(shù)算法應(yīng)用到所述源文件的至少一部分而計算散列值??刂茊卧槍ο鄳?yīng)源文件生成散列數(shù)據(jù),所述散列數(shù)據(jù)包括文件信息和散列值。因此,本發(fā)明的優(yōu)點在于,不必在不同的文件當中比較所有的散列值,因此更加快速地比較文件。
文檔編號G06F17/30GK102945241SQ20121033302
公開日2013年2月27日 申請日期2012年9月10日 優(yōu)先權(quán)日2011年10月28日
發(fā)明者張星國, 劉光喜, 成周弦, 陳譓瑱, 李允珩 申請人:新游游戲株式會社