CN102930004B - 哈希值存储方法、装置及芯片 - Google Patents

哈希值存储方法、装置及芯片 Download PDF

Info

Publication number
CN102930004B
CN102930004B CN201210420707.9A CN201210420707A CN102930004B CN 102930004 B CN102930004 B CN 102930004B CN 201210420707 A CN201210420707 A CN 201210420707A CN 102930004 B CN102930004 B CN 102930004B
Authority
CN
China
Prior art keywords
data block
hash
cryptographic hash
sublist
file
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201210420707.9A
Other languages
English (en)
Other versions
CN102930004A (zh
Inventor
覃祥菊
周咸春
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201210420707.9A priority Critical patent/CN102930004B/zh
Publication of CN102930004A publication Critical patent/CN102930004A/zh
Application granted granted Critical
Publication of CN102930004B publication Critical patent/CN102930004B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明实施例公开了哈希值存储方法、装置及芯片,所述方法包括:计算文件中多个数据块的哈希值;选择所述多个数据块中每个数据块的哈希值对应的哈希子表;将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述对应的哈希子表中。本发明实施例可以通过硬件实现同时计算并存储多个数据块的哈希值,因此当文件中的数据块数量较多时,可以加快哈希值的处理速度,提高哈希值的存储效率。

Description

哈希值存储方法、装置及芯片
技术领域
本发明涉及数据存储技术领域,特别涉及哈希值存储方法、装置及芯片。
背景技术
随着资讯信息更新速度的加快,以及网络科技的蓬勃发展,产生了大量需要存储的文件数据。为了节约存储空间,需要对文件数据进行压缩编码后再进行存储。现有技术中的一种压缩方式为,如果文件中存在两块内容相同的数据块,则可以获取其中一个数据块的位置和大小后,对另一个数据块进行替换。由于在查找两块内容相同的数据块时,将当前位置的数据块与已出现过的数据块逐一进行对比,以获取相同的数据块时,处理速度比较慢,因此现有技术中计算每个数据块的hash(哈希)值,通过比较数据块的hash值,查找相同的数据块,以提高查找效率。
现有技术中通过建立hash表存储每个数据块的hash值,通常由计算机的中央处理器(Central Processing Unit,CPU)计算每个数据块的hash值,然后将计算的hash值和数据块在文件中的位置进行存储。由于CPU采用串行指令逐一计算并存储hash值,因此当文件中数据块的数量较多时,则执行速度比较慢,相应降低了hash值的存储效率。
发明内容
本发明实施例提供哈希值存储方法、装置及芯片,以解决现有技术中哈希值存储效率不高的问题。
为了解决上述技术问题,本发明实施例公开了如下技术方案:
第一方面,提供一种哈希值存储方法,所述方法包括:
计算文件中多个数据块的哈希值;
选择所述多个数据块中每个数据块的哈希值对应的哈希子表;
将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述对应的哈希子表中。
结合第一方面,在第一种可能的实现方式中,所述计算文件中多个数据块的哈希值,包括:
从所述文件中获取与设置的并行处理数一致的多个数据块;
并行计算获取的所述多个数据块的哈希值。
结合第一方面,或第一种可能的实现方式,在第二种可能的实现方式中,所述选择所述多个数据块中每个数据块的哈希值对应的哈希子表,包括:
对于每个数据块,比较所述数据块的哈希值与每个哈希子表存储的哈希值范围;
根据比较结果,获得所述数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的所述哈希子表确定为所述数据块的哈希值对应的哈希子表。
结合第一方面,或第一种可能的实现方式,或第二种可能的实现方式,在第三种可能的实现方式中,所述将每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述对应的哈希子表中,包括:
当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
结合第三种可能的实现方式,在第四种可能的实现方式中,所述按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表,包括:
按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表;或者,
按照随机选择的方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
第二方面,提供一种哈希值存储装置,所述装置包括:
计算单元,用于计算文件中多个数据块的哈希值;
选择单元,用于选择所述计算单元计算的所述多个数据块中每个数据块的哈希值对应的哈希子表;
存储单元,用于将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述选择单元选择的所述对应的哈希子表中。
结合第二方面,在第一种可能的实现方式中,所述计算单元包括:
获取子单元,用于从所述文件中获取与设置的并行处理数一致的多个数据块;
计算子单元,用于并行计算所述获取子单元获取的所述多个数据块的哈希值。
结合第二方面,或第一种可能的实现方式,在第二种可能的实现方式中,所述选择单元包括:
比较子单元,用于对于每个数据块,比较所述数据块的哈希值与每个哈希子表存储的哈希值范围;
获得子单元,用于根据所述比较子单元的比较结果,获得所述数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的所述哈希子表确定为所述数据块的哈希值对应的哈希子表。
结合第二方面,或第一种可能的实现方式,或第二种可能的实现方式,在第三种可能的实现方式中,所述存储单元,具体用于当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
结合第三种可能的实现方式,在第四种可能的实现方式中,所述存储单元包括至少一个下述单元:
第一存储子单元,用于按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表;
第二存储子单元,用于按照随机选择的方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
第三方面,提供一种芯片,所述芯片包括:至少一个输入输出接口,至少一个随机存储器RAM,和门级电路,其中,
所述输入输出接口,用于接收文件,并将所述文件输入到所述门级电路;
每个所述RAM,用于保存至少一个哈希子表;
所述门级电路,用于计算所述文件中多个数据块的哈希值,选择所述多个数据块中每个数据块的哈希值对应的哈希子表,并将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述保存所述对应的哈希子表的RAM中。
结合第三方面,在第一种可能的实现方式中,所述门级电路,具体用于从所述文件中获取与设置的并行处理数一致的多个数据块,并行计算获取的所述多个数据块的哈希值,对于每个数据块,比较所述数据块的哈希值与每个哈希子表存储的哈希值范围,根据比较结果,获得所述数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的所述哈希子表确定为所述数据块的哈希值对应的哈希子表。
结合第三方面,或第一种可能的实现方式,在第二种可能的实现方式中,所述门级电路,具体用于当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
结合第二种可能的实现方式,在第三种可能的实现方式中,所述门级电路,具体用于按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表;或者,按照随机选择的方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
本发明实施例中,计算文件中多个数据块的哈希值,选择多个数据块中每个数据块的哈希值对应的哈希子表,将每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述对应的哈希子表中。本发明实施例可以通过硬件实现同时计算并存储多个数据块的哈希值,因此当文件中的数据块数量较多时,可以加快哈希值的处理速度,提高哈希值的存储效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明哈希值存储方法的一个实施例流程图;
图2为本发明哈希值存储方法的另一个实施例流程图:
图3为本发明哈希值存储装置的实施例框图;
图4为本发明芯片的实施例框图;
图5为应用本发明实施例的一种芯片架构示意图。
具体实施方式
本发明如下实施例提供了哈希值存储方法、装置及芯片,以提高哈希值的存储效率。
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
参见图1,为本发明哈希值存储方法的一个实施例流程图:
步骤101:计算文件中多个数据块的哈希值。
本实施例中的哈希值存储方法可以基于硬件,例如可编程芯片实现。其中,可以设置芯片上每次存储哈希值时,对数据块进行处理的并行处理数,从待处理的文件中获取与设置的并行处理数一致的多个数据块,并行计算获取的多个数据块的哈希值。
步骤102:选择多个数据块中每个数据块的哈希值对应的哈希子表。
本实施例中,可以通过芯片上设置的多个随机存储器(Random Access Memory,RAM)保存不同的哈希值,其中每个RAM上可以保存至少一个哈希子表,每个哈希子表用于存储某个哈希值范围内的哈希值,所有哈希子表组成该文件的哈希表。
对于并行处理的每个数据块的哈希值,可以比较该数据块的哈希值与每个哈希子表存储的哈希值范围,根据比较结果,获得该数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的哈希子表确定为该数据块的哈希值对应的哈希子表。
步骤103:将每个数据块的哈希值和该数据块在文件中的位置信息存储到选择的哈希子表中。
本实施例中,当根据步骤102为每个数据块的哈希值选择了对应的哈希子表后,将每个数据块的哈希值及该数据块在文件中的位置信息存储到选择的哈希子表中。对多个数据块来说,可以将多个数据块的哈希值并行存储到不同的哈希子表中。
在存储过程中,当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,可以按照预设方式将至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。其中,预设方式可以灵活设置,例如,可以按照数据块的优先级从高到低的顺序将哈希值存储到同一个哈希子表中,或者按照随机选择的方式将哈希值存储到同一个哈希子表中,对此本发明实施例不进行限制。
由上述实施例可见,该实施例可以通过硬件实现同时计算并存储多个数据块的哈希值,因此当文件中的数据块数量较多时,可以加快哈希值的处理速度,提高哈希值的存储效率。
参见图2,为本发明哈希值存储方法的另一个实施例流程图,该实施例详细示出了本发明哈希值的存储过程:
步骤201:从文件中获取与设置的并行处理数一致的多个数据块。
本实施例中的哈希值存储方法可以基于硬件,例如可编程芯片实现。其中,可以设置芯片上每次存储哈希值时,对数据块进行处理的并行处理数,即通过多路并行处理方式对多个数据块的哈希值进行存储,从待处理的文件中获取与设置的并行处理数一致的多个数据块。在获取多个数据块时,可以按照文件中字符的排列顺序获取,每个数据块中可以包含至少一个字符。
步骤202:并行计算获取的多个数据块的哈希值。
在计算每个数据块的哈希值时,可以采用现有计算方式,例如,当文件中的每个字符作为一个数据块时,可以根据当前字符和当前字符之前的两个字符计算该当前字符的哈希值。
步骤203:对于每个数据块,比较该数据块的哈希值与每个哈希子表存储的哈希值范围。
本实施例中,可以通过芯片上设置的多个RAM保存不同的哈希值,其中每个RAM上可以保存至少一个哈希子表,每个哈希子表用于存储某个哈希值范围内的哈希值,所有哈希子表组成该文件的哈希表。
步骤204:根据比较结果,获得该数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的哈希子表确定为该数据块的哈希值对应的哈希子表。
步骤205:将每个数据块的哈希值和该数据块在文件中的位置信息存储到确定的该数据块的哈希值对应的哈希子表中。
在存储过程中,当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,可以按照预设方式将至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。具体的,可以按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表;或者,也可以按照随机选择的方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
另外,为了进一步提高存储速度,也可以按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,仅将其中前N个数据块的哈希值和所述N个数据块在所述文件中的位置信息存储到所述同一个哈希子表,并丢弃除所述N个数据块外的其它数据块,该N的取值小于所述至少两个数据块的数量值。
由上述实施例可见,该实施例可以通过硬件实现同时计算并存储多个数据块的哈希值,因此当文件中的数据块数量较多时,可以加快哈希值的处理速度,提高哈希值的存储效率。
与本发明哈希值存储方法的实施例相对应,本发明还提供了哈希值存储装置及芯片的实施例。
参见图3,为本发明哈希值存储装置的实施例框图:
该装置包括:计算单元310、选择单元320和存储单元330。
其中,计算单元310,用于计算文件中多个数据块的哈希值;
选择单元320,用于选择所述计算单元310计算的所述多个数据块中每个数据块的哈希值对应的哈希子表;
存储单元330,用于将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述选择单元320选择的所述对应的哈希子表中。
可选的,所述计算单元310可以包括(图3中未示出):
获取子单元,用于从所述文件中获取与设置的并行处理数一致的多个数据块;
计算子单元,用于并行计算所述获取子单元获取的所述多个数据块的哈希值。
可选的,所述选择单元320可以包括(图3中未示出):
比较子单元,用于对于每个数据块,比较所述数据块的哈希值与每个哈希子表存储的哈希值范围;
获得子单元,用于根据所述比较子单元的比较结果,获得所述数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的所述哈希子表确定为所述数据块的哈希值对应的哈希子表。
具体的,所述存储单元330,可以具体用于当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
进一步,所述存储单元330可以包括至少一个下述单元(图3中未示出):
第一存储子单元,用于按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表;
第二存储子单元,用于按照随机选择的方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
由上述实施例可见,该实施例可以通过硬件实现同时计算并存储多个数据块的哈希值,因此当文件中的数据块数量较多时,可以加快哈希值的处理速度,提高哈希值的存储效率。
参见图4,为本发明芯片的实施例框图:
该芯片包括:至少一个输入输出接口410,至少一个随机存储器RAM420,和门级电路430。为了示例方便,图4中分别示出了三个输入输出接口和三个随机存储器RAM,实际应用中输入输出接口的数量和随机存储器RAM的数量可以灵活设置,不受图4所示实施例的限制。
其中,所述输入输出接口410,用于接收文件,并将所述文件输入到所述门级电路430;
每个所述RAM420,用于保存至少一个哈希子表;
所述门级电路430,用于计算所述文件中多个数据块的哈希值,选择所述多个数据块中每个数据块的哈希值对应的哈希子表,并将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述保存所述对应的哈希子表的RAM420中。
其中,所述门级电路430,可以具体用于从所述文件中获取与设置的并行处理数一致的多个数据块,并行计算获取的所述多个数据块的哈希值,对于每个数据块,比较所述数据块的哈希值与每个哈希子表存储的哈希值范围,根据比较结果,获得所述数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的所述哈希子表确定为所述数据块的哈希值对应的哈希子表。
其中,所述门级电路430,可以具体用于当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
进一步,所述门级电路430,可以具体用于按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表;或者,按照随机选择的方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
本发明实施例中示出的芯片在实际应用中可以采用可编程门阵列(FieldProgrammable Gate Array,FPGA)。
由上述实施例可见,该实施例可以通过硬件实现同时计算并存储多个数据块的哈希值,因此当文件中的数据块数量较多时,可以加快哈希值的处理速度,提高哈希值的存储效率。
参见图5,为应用本发明实施例的一个芯片的架构示意图,假设该芯片可以用于实现16路hash值的并行计算和存储:
图5中,芯片中包括输入输出接口,门级电路及16个RAM。其中,门级电路中包括16个hash值计算模块和对应的16个选择模块,以及一个hash值存储模块;hash值存储模块与16个RAM相连,每个RAM中存储一个hash子表。应用图5中示出的芯片架构,可以同时计算16个hash值,与现有仅能每次计算一个hash值相比,处理速度可以提高16倍。
本实施例中在计算hash值时,可以按照字符在文件中的顺序,每次并行处理时获取18bit数据,每个字符作为一个data,大小为1bit,假设本实施例中根据当前字符和当前字符之前的两个字符计算该当前字符的哈希值,则对于18bit数据,可以根据第1、2、3个字符计算第3个字符的哈希值,根据第2、3、4个字符计算第4个字符的哈希值,以此类推,根据第16、17、18个字符计算第18个字符的哈希值,即18bit数据中第3个字符至第18个字符的哈希值分别通过图5中的16路hash值计算模块进行计算。其中,每个hash值计算模块从输入输出接口获取到的数据块中包含3个字符。
在每个hash值计算模块中,可以采用如下公式计算hash值:
Hash=(data(i-2)<<10)^(data(i-1)<<5)^(data(i)),i的取值范围为3至18;
上式中,“<<”表示向左移,“^”表示异或运算。假设本实施例中hash值的计算结果为15bit,每个data为8bit,以计算第3个字符的hash值为例,公式为“(data1<<10)^(data2<<5)^(data3)”,其中,用于异或运算的第一个值“(data1<<10)”表示将8bit的data1向左移10位,即在低位上补10个0,同时为了获得15bit的计算结果,则将计算得到的18bit的高三位去除;用于异或运算的第二个值“(data2<<5)”表示将8bit的data2向左移5位,即在低位上补5个0,同时为了获得15bit的计算结果,将计算得到的13bit的高二位上补0;用于异或运算的第三个值(data3),为了获得15bit的计算结果,将8bit的data3的高位补7个0;将上述三个15bit的值进行异或运算后得到的值即为data3的hash值。
每个hash值计算模块计算完所获取的data的hash值之后,将该hash值输入到对应的选择模块,由选择模块根据hash值选择对应的哈希子表,如下表1所示,为一种hash子表的存储范围示例:
表1
  hash子表编号   1   2   3   4
  hash值范围   0~2047   2048~4095   4096~6143   6144~8191
  hash子表编号   5   6   7   8
  hash值范围   8192~10239   10240~12287   12288~14335   14336~16383
  hash子表编号   9   10   11   12
  hash值范围   16384~18431   18432~20479   20480~22527   22528~24575
  hash子表编号   13   14   15   16
  hash值范围   24576~26623   26624~28671   28672~30719   30720~32767
选择模块可以根据上表1的示例,比较计算得到的hash值所属的hash值范围,获取对应的hash子表编号,将hash子表编号发送给hash值存储模块,hash值存储模块根据hash子表编号将hash值存储到保存了该hash子表的RAM上,每个hash子表中的存储方式可以与现有hash表的存储方式一致,即将每个hash值作为RAM的地址,每个hash值对应的地址空间内存储该hash值对应的data在文件中的位置信息。
其中,当某一时刻,同时有多个hash值需要存储到同一个hash子表,则hash值存储模块可以为每个hash值设置优先级,例如,一种设置方式为按照data编号从小到大的顺序设置data的hash值的优先级顺序从大到小,仍然以18个data为例,则其优先级顺序为:data1>data2>data3……>data18。
由上述实施例可见,本发明实施例中计算文件中多个数据块的哈希值,选择多个数据块中每个数据块的哈希值对应的哈希子表,将每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述对应的哈希子表中。本发明实施例可以通过硬件实现同时计算并存储多个数据块的哈希值,因此当文件中的数据块数量较多时,可以加快哈希值的处理速度,提高哈希值的存储效率。
本发明公开的上述哈希值存储实施例可以应用在文件压缩算法中,例如,消息摘要算法第五版(Message Digest Algorithm 5,MD5),安全散列算法(Secure HashAlgorithm,SHA)等。
本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述的本发明实施方式,并不构成对本发明保护范围的限定。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围之内。

Claims (14)

1.一种哈希值存储方法,其特征在于,所述方法包括:
计算文件中多个数据块的哈希值;
选择所述多个数据块中每个数据块的哈希值对应的哈希子表,所述哈希子表保存于RAM上,每个所述RAM上保存至少一个哈希子表,所有哈希子表组成所述文件的哈希表;
将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述对应的哈希子表中。
2.根据权利要求1所述的方法,其特征在于,所述计算文件中多个数据块的哈希值,包括:
从所述文件中获取与设置的并行处理数一致的多个数据块;
并行计算获取的所述多个数据块的哈希值。
3.根据权利要求1或2所述的方法,其特征在于,所述选择所述多个数据块中每个数据块的哈希值对应的哈希子表,包括:
对于每个数据块,比较所述数据块的哈希值与每个哈希子表存储的哈希值范围;
根据比较结果,获得所述数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的所述哈希子表确定为所述数据块的哈希值对应的哈希子表。
4.根据权利要求1或2所述的方法,其特征在于,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述对应的哈希子表中,包括:
当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
5.根据权利要求4所述的方法,其特征在于,所述按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表,包括:
按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表;或者,
按照随机选择的方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
6.一种哈希值存储装置,其特征在于,所述装置包括:
计算单元,用于计算文件中多个数据块的哈希值;
选择单元,用于选择所述计算单元计算的所述多个数据块中每个数据块的哈希值对应的哈希子表,所述哈希子表保存于RAM上,每个所述RAM上保存至少一个哈希子表,所有哈希子表组成所述文件的哈希表;
存储单元,用于将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述选择单元选择的所述对应的哈希子表中。
7.根据权利要求6所述的装置,其特征在于,所述计算单元包括:
获取子单元,用于从所述文件中获取与设置的并行处理数一致的多个数据块;
计算子单元,用于并行计算所述获取子单元获取的所述多个数据块的哈希值。
8.根据权利要求6或7所述的装置,其特征在于,所述选择单元包括:
比较子单元,用于对于每个数据块,比较所述数据块的哈希值与每个哈希子表存储的哈希值范围;
获得子单元,用于根据所述比较子单元的比较结果,获得所述数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的所述哈希子表确定为所述数据块的哈希值对应的哈希子表。
9.根据权利要求6或7所述的装置,其特征在于,
所述存储单元,具体用于当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
10.根据权利要求9所述的装置,其特征在于,所述存储单元包括至少一个下述单元:
第一存储子单元,用于按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表;
第二存储子单元,用于按照随机选择的方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
11.一种芯片,其特征在于,所述芯片包括:至少一个输入输出接口,至少一个随机存储器RAM,和门级电路,其中,
所述输入输出接口,用于接收文件,并将所述文件输入到所述门级电路;
每个所述RAM,用于保存至少一个哈希子表,每个所述RAM上保存至少一个哈希子表,所有哈希子表组成所述文件的哈希表;
所述门级电路,用于计算所述文件中多个数据块的哈希值,选择所述多个数据块中每个数据块的哈希值对应的哈希子表,并将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述保存所述对应的哈希子表的RAM中。
12.根据权利要求11所述的芯片,其特征在于,
所述门级电路,具体用于从所述文件中获取与设置的并行处理数一致的多个数据块,并行计算获取的所述多个数据块的哈希值,对于每个数据块,比较所述数据块的哈希值与每个哈希子表存储的哈希值范围,根据比较结果,获得所述数据块的哈希值所属的哈希值范围对应的哈希子表,将获得的所述哈希子表确定为所述数据块的哈希值对应的哈希子表。
13.根据权利要求11或12所述的芯片,其特征在于,
所述门级电路,具体用于当所述多个数据块中的至少两个数据块的哈希值对应同一个哈希子表时,按照预设方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
14.根据权利要求13所述的芯片,其特征在于,
所述门级电路,具体用于按照所述至少两个数据块中每个数据块的优先级从高到低的顺序,将所述每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表;或者,按照随机选择的方式将所述至少两个数据块中的每个数据块的哈希值和所述数据块在所述文件中的位置信息存储到所述同一个哈希子表。
CN201210420707.9A 2012-10-29 2012-10-29 哈希值存储方法、装置及芯片 Active CN102930004B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201210420707.9A CN102930004B (zh) 2012-10-29 2012-10-29 哈希值存储方法、装置及芯片

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201210420707.9A CN102930004B (zh) 2012-10-29 2012-10-29 哈希值存储方法、装置及芯片

Publications (2)

Publication Number Publication Date
CN102930004A CN102930004A (zh) 2013-02-13
CN102930004B true CN102930004B (zh) 2015-07-08

Family

ID=47644802

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201210420707.9A Active CN102930004B (zh) 2012-10-29 2012-10-29 哈希值存储方法、装置及芯片

Country Status (1)

Country Link
CN (1) CN102930004B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106302172A (zh) * 2015-05-18 2017-01-04 深圳市中兴微电子技术有限公司 同时支持哈希查找和路由查找的存储、查找方法和装置
CN106469219A (zh) * 2016-09-09 2017-03-01 武汉长光科技有限公司 一种嵌入式设备配置文件同步比较的方法
CN111279310B (zh) 2017-10-24 2023-09-12 华为国际有限公司 一种车载设备升级方法及相关设备
CN109213774B (zh) * 2018-08-01 2024-03-08 平安科技(深圳)有限公司 数据的存储方法及装置、存储介质、终端
CN110413236A (zh) * 2019-08-01 2019-11-05 北京阿尔山金融科技有限公司 数据的管理方法、装置以及电子设备

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442553B1 (en) * 1994-10-31 2002-08-27 Fujitsu Limited Hash system and hash method for transforming records to be hashed
CN102467572A (zh) * 2010-11-17 2012-05-23 英业达股份有限公司 支持重复数据删除程序的数据区块查询方法
CN102722583A (zh) * 2012-06-07 2012-10-10 无锡众志和达存储技术有限公司 重复数据删除硬件加速装置和方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6442553B1 (en) * 1994-10-31 2002-08-27 Fujitsu Limited Hash system and hash method for transforming records to be hashed
CN102467572A (zh) * 2010-11-17 2012-05-23 英业达股份有限公司 支持重复数据删除程序的数据区块查询方法
CN102722583A (zh) * 2012-06-07 2012-10-10 无锡众志和达存储技术有限公司 重复数据删除硬件加速装置和方法

Also Published As

Publication number Publication date
CN102930004A (zh) 2013-02-13

Similar Documents

Publication Publication Date Title
CN102930004B (zh) 哈希值存储方法、装置及芯片
CN104239518A (zh) 重复数据删除方法和装置
CN103020255B (zh) 分级存储方法和装置
CN105117417B (zh) 一种读优化的内存数据库Trie树索引方法
CN104679778A (zh) 一种搜索结果的生成方法及装置
CN103678293B (zh) 一种数据存储方法及装置
CN103793424A (zh) 数据库数据迁移方法及系统
CN103189867A (zh) 重复数据检索方法及设备
CN103246484B (zh) 一种数据存储方法、装置及系统
CN103678172A (zh) 一种本地数据缓存管理方法及装置
CN103902544A (zh) 一种数据处理方法及系统
CN105260534A (zh) 用于超大规模芯片验证的回归测试用例维护方法及系统
CN103412825B (zh) 一种内存释放方法及装置
CN105117351A (zh) 向缓存写入数据的方法及装置
CN103500224B (zh) 一种数据写入方法及装置、数据读取方法及装置
CN104572845A (zh) 文件分发方法、装置、设备及系统
CN103885829A (zh) 一种基于统计的虚拟机跨数据中心动态迁移优化方法
CN107229747A (zh) 一种基于流式处理框架的大规模数据处理装置及方法
CN103559102A (zh) 数据冗余处理方法、装置和分布式存储系统
CN104112011A (zh) 一种海量数据提取的方法及装置
CN105763886A (zh) 一种分布式转码方法和装置
CN106897280A (zh) 数据查询方法及装置
CN104424240A (zh) 多表关联方法、主服务节点、计算节点及系统
CN105718319A (zh) 一种内存池版图解析方法和内存池装置
CN106156049A (zh) 一种数据读取的方法和系统

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant