数据散列值获取方法与装置制造方法
【专利摘要】本发明公开一种数据散列值获取方法与装置,用于求取数据的散列值。该数据散列值获取方法包括:定义Hash算法为数据散列值获取方法的算法,其中Hash算法的数据输入长度为m;对预设数据(X)进行分组为:A1,A2,A3……AK,且A1,A2,A3……AK长度相等,均为d,d大于m,并为m的整数倍;调用Hash算法分别求取A1,A2,A3……AK的散列值,定义A1,A2,A3……AK的散列值分别为:B1,B2,B3……BK;连接B1,B2,B3……BK为数据(Y);调用Hash算法求取数据(Y)的散列值,定义数据(Y)的散列值为:Z,则Z为数据(X)长度为d分组的散列值。本发明采用的散列值获取方法,解决常规散列值算法不能发挥的并行处理能力而导致的运算时间长的问题。
【专利说明】数据散列值获取方法与装置
【技术领域】
[0001]本发明涉及数据加密安全领域,更具体的涉及一种数据散列值获取方法与装置。
【背景技术】
[0002]在对信息加密认证或获取校验值时,常需要求取数据的散列值。目前国际通用的数据散列技术如MD4、MD5、SHA1等,主要是基于MD4算法。但这些算法均对原始数据进行分组,并从第一组开始求取其散列值,求取的结果与下一组数据组合后,再对组合后的数据求取散列值,一直到求取到最后一组,最终结果即为整个数据的散列值。
[0003]具体而言,现有技术方案中对数据的散列值的求取过程如下:
[0004]令散列算法为Hash,Hash算法的输入数据长度为m,常规散列算法的处理过程如下:
[0005]1.1对于数据X,首先分组为X1、X2、X3……Xn,其中X1、X2……Xn等长度均为m,长度不足时以“O”补齐;
[0006]1.2求取Hash (Xl),将其结果为与X2结合为Y2 ;
[0007]1.3再计算Hash (Y2),将其结果与X3结合为Y3 ;
[0008]1.4按上述方法依次对X3……Xn进行处理,最终求取Hash (Yn),其结果即为所求数据的散列值。
[0009]目录的散列算法在处理数据时,每一组数据的计算都必须等待上一组计算完毕才能运算,整个运算过程是串行处理的,对于小数据量数据求散列值,是没有问题的。对于大数据处理,由于是串行处理,不能发挥并行处理能力,运算时间长。
[0010]因此,现有技术中存在求取大数据的散列值因采用串行处理模式导致的运算时间过长的问题。
【发明内容】
[0011]本发明公开一种数据散列值获取方法与装置,用于解决现有技术中存在求取大数据的散列值因采用串行处理模式导致的运算时间过长的问题。
[0012]为实现上述目的,根据本发明的一个方面,提供一种数据散列值获取方法,并采用如下技术方案:
[0013]该数据散列值获取方法包括:定义Hash算法为数据散列值获取方法的算法,其中所述Hash算法的数据输入长度为m;对预设数据⑴进行分组为:A1,A2,A3……AK,且Al,A2,A3……AK长度相等,均为d,所述d大于m,并为m的整数倍;调用所述Hash算法分别求取Al,A2,A3……AK的散列值,定义Al,A2,A3……AK的散列值分别为:B1,B2,B3……BK ;连接B1,B2,B3……BK为数据(Y);调用所述Hash算法求取所述数据(Y)的散列值,定义所述数据⑴的散列值为:Z,则所述Z为所述数据⑴长度为d分组的散列值。
[0014]根据本发明的另外一个方面,提供一种数据散列值获取装置,并采用如下技术方案:
[0015]数据散列值获取装置包括:定义模块,用于定义Hash算法为数据散列值获取方法的算法,其中所述Hash算法的数据输入长度为m;分组模块,用于对预设数据(X)进行分组为:A1, A2,A3……AK,且Al,A2,A3……AK长度相等,均为d,所述d大于m,并为m的整数倍;第一调用模块,用于调用所述Hash算法分别求取Al,A2,A3……AK的散列值,定义Al,A2,A3……AK的散列值分别为:B1,B2,B3……BK ;连接模块,用于连接BI,B2,B3……BK为数据(Y);第二调用模块,用于调用所述Hash算法求取所述数据(Y)的散列值,定义所述数据(Y)的散列值为:Z,则所述Z为所述数据(X)长度为d分组的散列值。
[0016]本发明通过由于将预设数据X分组为Al、A2、A3……Ak,并分别按现有HASH算法求取其散列值,所以A1、A2、A3……Ak等的散列计算可以并行进行,在并行运算的环境中能够发挥并行运算优势,大大提高计算效率。
【专利附图】
【附图说明】
[0017]附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0018]图1表示本发明实施例所述的数据散列值获取方法的流程图;
[0019]图2表示本发明实施例所述的数据散列值获取装置的结构示意图。
【具体实施方式】
[0020]以下结合附图对本发明的实施例进行详细说明,但是本发明可以由权利要求限定和覆盖的多种不同方式实施。
[0021]图1表示本发明实施例所述的数据散列值获取方法的流程图。
[0022]参见图1所示,数据散列值获取方法包括:
[0023]SlOl:定义Hash算法为数据散列值获取方法的算法,其中所述Hash算法的数据输入长度为m ;
[0024]S103:对预设数据(X)进行分组为:A1,A2,A3……AK,且A1,A2,A3……AK长度相等,均为山所述d大于m,并为m的整数倍;
[0025]S105:调用所述Hash算法分别求取Al,A2,A3……AK的散列值,定义Al,A2,A3……AK的散列值分别为:B1, B2,B3……BK ;
[0026]S107:连接 BI,B2,B3……BK 为数据(Y);
[0027]S109:调用所述Hash算法求取所述数据⑴的散列值,定义所述数据⑴的散列值为:Z,则所述Z为所述数据(X)长度为d的分组的散列值。
[0028]更具体而言,例如:在拥有1000个运算单元的环境中,采用MD5算法求取长度为1000000000字节的数据,如果用传统算法处理,具体实现方法如下:
[0029]1、将1000000000字节数据按64字节一组进行分组,共分为15625000组;
[0030]2、对第一组数据求MD5值,将其结果与第二组数据模加;
[0031]3、求取步骤2结果的MD5值,再与第三组数据模加;
[0032]4、以此类推,将求取的15624999组结果,与第15625000组数据模加,结果为所求数据的散列值。
[0033]在该次运算过程中,由于每一组数据的求取工作都需要上一组数据的计算结果,所以不能并行处理,1000个运算单元的运算能力不能发挥出来,与一个运算单元的运算时间相同,极大地浪费了运算能力。
[0034]采用本发明的算法的具体实现方法如下:
[0035]1、将1000,000, 000字节数据按1000000字节一组进行分组,共分为1000组数据;
[0036]2、采用HASH算法分别求取每一组数据的散列值;
[0037]3、将1000组数据的散列值连接起来;
[0038]4、按传统算法求取连接结果的散列值,所示结果即为所求数据长度为1000000000分组的散列值。
[0039]在该次运算中,在分别求取1000组数据的散列值的过程中,每一组都可以单独求取,不依赖其它组的求取结果,所以可以并行处理,即可以让每一个运算单元按传统算法分别运算一组数据的散列值,最后再将每一组数据的运算结果连接起来,求取最终结果。发挥了所有运算单元的计算能力,运算时间缩短1000倍。
[0040]图2表示本发明实施例所述的数据散列值获取装置的结构示意图。
[0041]参见图2所示,数据散列值获取装置包括:定义模块20,用于定义Hash算法为数据散列值获取方法的算法,其中所述Hash算法的数据输入长度为m;分组模块22,用于对预设数据(X)进行分组为:A1,A2,A3……AK,且A1,A2,A3……AK长度相等,均为d,所述d大于m,并为m的整数倍;第一调用模块24,用于调用所述Hash算法分别求取Al,A2,A3……AK的散列值,定义Al,A2,A3……AK的散列值分别为:B1,B2,B3……BK;连接模块26,用于连接BI,B2, B3……BK为数据(Y);第二调用模块28,用于调用所述Hash算法求取所述数据(Y)的散列值,定义所述数据(Y)的散列值为:Z,则所述Z为所述数据(X)长度为d的分组的散列值。
[0042]本发明通过由于将预设数据X分组为Al、A2、A3……Ak,并分别按现有HASH算法求取其散列值,所以A1、A2、A3……Ak等的散列计算可以并行进行,在并行运算的环境中能够发挥并行运算优势,大大提高计算效率。
[0043]以上所述是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明所述原理的前提下,还可以作出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
【权利要求】
1.一种数据散列值获取方法,其特征在于,包括: 定义Hash算法为数据散列值获取方法的算法,其中所述Hash算法的数据输入长度为m ;对预设数据(X)进行分组为:A1,A2,A3......AK,且Al,A2,A3......AK长度相等,均为山所述d大于m,并为m的整数倍;调用所述Hash算法分别求取Al,A2,A3......AK的散列值,定义Al,A2,A3......AK的散列值分别为:B1, B2,B3......BK; 连接B1,B2,B3......BK为数据(Y); 调用所述Hash算法求取所述数据⑴的散列值,定义所述数据⑴的散列值为:Z,则所述Z为所述数据(X)长度为d分组的散列值。
2.一种数据散列值获取装置,其特征在于,包括: 定义模块,用于定义Hash算法为数据散列值获取方法的算法,其中所述Hash算法的数据输入长度为m ;分组模块,用于对预设数据(X)进行分组为:A1,A2,A3......AK,且A1,A2,A3......AK长度相等,均为山所述d大于m,并为m的整数倍;第一调用模块,用于调用所述Hash算法分别求取Al,A2,A3......AK的散列值,定义Al,A2,A3......AK 的散列值分别为:B1,B2,B3......BK ; 连接模块,用于连接B1,B2,B3......BK为数据(Y); 第二调用模块,用于调用所述Hash算法求取所述数据(Y)的散列值,定义所述数据(Y)的散列值为:Z,则所述Z为所述数据⑴长度为d分组的散列值。
【文档编号】G06F21/62GK104408375SQ201410588445
【公开日】2015年3月11日 申请日期:2014年10月29日 优先权日:2014年10月29日
【发明者】李梅 申请人:李梅