具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例为一种构建目标数据的数据指纹的技术,这种技术通过对目标数据以及该数据的片段进行哈希运算获得摘要值,再根据所述摘要值生成该目标数据的数据指纹。
在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
实施例一
如图1所示,图1为本实施例的构建目标数据的数据指纹的方法的示意流程图,该流程包括如下步骤:
101、根据第一哈希算法对目标数据进行哈希运算,获取所述目标数据的第一摘要值;
102、截取所述目标数据中的数据片段;
103、根据第二哈希算法对所述数据片段进行哈希运算,获取所述数据片段的第二摘要值;
104、根据所述第一摘要值和所述第二摘要值,生成所述目标数据的数据指纹。
本发明实施例中的第一哈希算法和第二哈希算法可以为相同的哈希算法,也可以为不同的哈希算法。但不管是用相同的哈希算法还是用不同的哈希算法,所获得的第一摘要值和第二摘要值都是不同的。生成的数据指纹包括了第一摘要值和第二摘要值,比如所述数据指纹可以是将第一摘要值和第二摘要值首尾相接组合而成的,其中第一摘要值和第二摘要值可以任意组合前后次序。这样获得的数据指纹不再单纯的依靠于某种哈希算法,从而保证了所述数据指纹的“碰撞约束”强度能够不低于在本实施例的方法中所使用的最脆弱哈希算法正常使用下的设计强度,具有较好的可靠性。
需要说明的是,本发明实施例方法可以根据实际需要对各个步骤顺序进行调整。比如可先依序执行步骤102、103,再执行步骤101,最后执行步骤104,这样仍然可以获得上述本实施例方法中的相同的数据指纹,本发明实施例并不以此作为限制。
本发明实施例与现有技术相比的优点在于,通过对目标数据及所述目标数据中的数据片段进行哈希运算,即可获得有独立特征的数据参数,即摘要值,再根据所述摘要值生成数据指纹,通过这种方法获得的数据指纹不仅简单实用,运算量小,减小了系统的工作负担,而且唯一性、可靠性都非常高。
实施例二
如图2所示,图2为本实施例的构建目标数据的数据指纹的方法的示意流程图,该流程包括如下步骤:
201、根据第一哈希算法对目标数据进行哈希运算,获取所述目标数据的第一摘要值;
202、截取所述目标数据中的数据片段;
203、判断所述数据片段的长度是否至少为128字节;若所述数据片段的长度至少为128字节,则执行步骤204;若所述数据片段的长度小于128字节,则执行步骤202。
204、根据第二哈希算法对所述数据片段进行哈希运算,获取所述数据片段的第二摘要值;
205、根据所述第一摘要值和所述第二摘要值,生成所述目标数据的数据指纹。
本发明实施例中,在截取了所述目标数据片段后,还要判断所述截取的数据片段长度是否至少为128个字节,若所述数据片段的长度至少为128字节,则执行步骤204;若所述数据片段的长度小于128字节,则执行步骤202。这么做的目的主要是为了保证生成的数据指纹有足够的强度,因为数据指纹的强度与第一摘要值和第二摘要值的长度有关,而所述的第一摘要值和第二摘要值的长度又分别与第一哈希算法强度和第二哈希算法强度有关,而第一哈希算法是对目标数据进行的运算,由于目标数据长度是固定的,所以第一哈希算法强度主要由第一哈希算法相关联;第二哈希算法是对目标数据的数据片段进行的运算,所述数据片段的长度若太小,则通过第二哈希算法获得的第二摘要值长度就小,所以数据指纹的强度就弱。
其中,数据指纹的强度可以通过常数关系来表示,当所述第一哈希算法的算法强度为2的N次方时,所述第二哈希算法的算法强度为2的M次方时,所述数据指纹的长度即为第一摘要值与第二摘要值的长度之和——N+M位,所以,所生成数据指纹在正常使用或“碰撞攻击”条件下的算法强度范围就是“2K~2N+M”,其中,常数K为N与M之间的最小值。当所述数据指纹强度为2K时,其强度最弱。
上述截取所述目标数据中的至少128字节长度的数据片段,具体可以是从所述目标数据的头部截取至少128字节长度的数据片段;或者从所述目标数据的尾部截取至少128字节长度的数据片段;或者从所述目标数据的头部与尾部之间截取至少128字节长度的数据片段。
本发明实施例与实施例一相比优点在于,可以对截取的数据片段的长度进行判断,使得截取的数据片段长度满足一定的要求,保证了最终生成的数据指纹的强度最弱也可以正常使用或抵御“碰撞攻击”。并且还提供了有效截取数据片段方法,进一步保证了截取数据片段对数据指纹可靠性的要求。
需要说明的是,本发明实施例方法可以根据实际需要对各个步骤顺序进行调整。比如可先依序执行步骤202、203、204,再执行步骤201,最后执行步骤205,这样仍然可以获得上述本实施例方法中的相同的数据指纹,本发明实施例并不以此作为限制。
实施例三
根据实施例一或实施例二所述的方法,在此,分别用三个独立的实施例来说明本发明实施例的技术方案。
如图3所示,图3为本发明实施例的第一种构建目标数据的数据指纹的方法的示意流程图,该流程包括如下步骤:
301、根据MD5(Message-Digest Algorithm 5,数据摘要算法5)哈希算法对目标数据File进行哈希运算,获取所述File的摘要值Digest-File;
302、从File头部截取一个长度为128Byte(1024bit)的数据片段File-Seg;
303、使用所述MD5哈希算法对所述数据片段File-Seg进行哈希运算,获取所述File-Seg的摘要值Digest-Seg;
304、将所述摘要值Digest-File与所述摘要值Digest-Seg首尾相接,生成目标数据文件File的数据指纹Fingerprint-File。
在本发明实施例的第一种构建目标数据的数据指纹的方法中,第一哈希算法和第二哈希算法相同,都是MD5哈希算法,这种哈希算法的强度是216,所以Digest-File与Digest-Seg的长度都为16位,生成目标数据文件File的数据指纹Fingerprint-File长度就等于32位,而所生成数据指纹在正常使用或“碰撞攻击”条件下的算法强度范围就是“216~232”,即当所述数据指纹强度为216时其强度最弱。
如图4所示,图4为本发明实施例的第二种构建目标数据的数据指纹的方法的示意流程图,该流程包括如下步骤:
401、根据SHA-1(Secure Hash Algorithm安全哈希算法)哈希算法对目标数据File进行一次哈希运算,获取所述File的摘要值Digest-File_SHA-1;
402、从File尾部截取一个长度为128Byte(1024bit)的数据片段File-Seg;
403、使用MD5哈希算法对所述数据片段File-Seg进行一次哈希运算,获取所述File-Seg的摘要值Digest-Seg_MD5;
404、将所述摘要值Digest-File_SHA-1与所述摘要值Digest-Seg_MD5首尾相接,生成目标数据文件File的数据指纹Fingerprint-File。
在本发明实施例的第二种构建目标数据的数据指纹的方法中,第一哈希算法和第二哈希算法不同,第一哈希算法为SHA-1哈希算法,这种哈希算法的强度是220,而第二哈希算法为MD5哈希算法,这种哈希算法的强度是216,所以Digest-File_SHA-1的长度为20位,Digest-Seg_MD5的长度为16位,生成目标数据文件File的数据指纹Fingerprint-File长度就等于36位,而所生成数据指纹在正常使用或“碰撞攻击”条件下的算法强度范围就是“216~236”,即当所述数据指纹强度为216时其强度最弱。
如图5所示,图5为本发明实施例的第三种构建目标数据的数据指纹的方法的示意流程图,该流程包括如下步骤:
501、根据MD5哈希算法对目标数据File进行哈希运算,获取所述File的摘要值Digest-File;
502、从所述目标数据的头部与尾部之间截取128字节长度的数据片段File-Seg;
503、判断所述数据片段File-Seg的长度是否为128字节;若所述数据片段的长度为128字节,则执行步骤504;若所述数据片段的长度小于128字节,则执行步骤502。
504、使用所述MD5哈希算法对所述数据片段File-Seg进行哈希运算,获取所述File-Seg的摘要值Digest-Seg;
505、将所述摘要值Digest-File与所述摘要值Digest-Seg首尾相接,生成目标数据文件File的数据指纹Fingerprint-File。
在本发明实施例的第三种构建目标数据的数据指纹的方法中,第一哈希算法和第二哈希算法相同,都是MD5哈希算法,这种哈希算法的强度是216;但本方法中截取数据片段是从所述目标数据的头部与尾部之间来截取的,具体从所述目标数据的头部与尾部之间截取的方法可以为根据目标数据File中16字节的数据长度除以128取整得到P,再将P与16相除取余得到Q,将Q乘以128即获得所抽取文件片断的偏移量Q*128字节,从File文件的Q*128字节的偏移量处读取128字节的File-Seg;判断所述数据片段File-Seg的长度是否为128字节;若读取的所述数据片段的长度为128字节,则执行步骤504;若所述数据片段File-Seg的原始数据长度小于128字节,则返回502重复读取的所述数据片段直到满足128字节的长度要求。最后生成目标数据文件File的数据指纹Fingerprint-File长度就等于32位,而所生成数据指纹在正常使用或“碰撞攻击”条件下的算法强度范围就是“216~232”,即当所述数据指纹强度为216时其强度最弱。
需要说明的是,与实施例一和实施例二类似,本发明实施例方法也可以根据实际需要对各个步骤顺序进行调整。这样仍然可以获得本实施例各方法中相同的数据指纹,本发明实施例并不以此作为限制。
由上述三种构建目标数据的数据指纹的方法可以看出,不管第一哈希算法和第二哈希算法相同还是不同,不管截取数据片段是从目标数据的头部、尾部还是通过特定算法截取,本发明实施例都不需要经过大量运算即可获得可靠性较高的数据指纹,减小了系统的工作负担,简单实用,并保证了最终生成的数据指纹的强度最弱也可以正常使用或抵御“碰撞攻击”。
实施例四
本发明实施例还提供一种构建目标数据的数据指纹的装置,如图6所示,图6为本发明实施例的一种构建目标数据的数据指纹的装置的结构框图,该装置包括:第一获取单元601、数据截取单元602、第二获取单元603、数据指纹生成单元604,还可以包括判断模块621,其中:
第一获取单元601,主要用于根据第一哈希算法对目标数据进行哈希运算,获取所述目标数据的第一摘要值;
数据截取单元602,主要用于截取所述目标数据中的数据片段;比如从所述目标数据的头部截取至少128字节长度的数据片段;或者从所述目标数据的尾部截取至少128字节长度的数据片段;或者从所述目标数据的头部与尾部之间截取至少128字节长度的数据片段。
第二获取单元603,主要用于根据第二哈希算法对所述数据片段进行哈希运算,获取所述数据片段的第二摘要值;
数据指纹生成单元604,主要用于根据所述第一摘要值和所述第二摘要值,生成所述目标数据的数据指纹。
其中,所述数据截取单元602可以包括判断模块621,主要用于判断所述数据片段的长度是否至少为128字节,并生成判断结果;当判断结果为是时,则所述数据截取单元602将截取到的所述至少为128字节的数据片段发送至第二获取单元603;当判断结果为否时,则不发送截取到的数据片段,并重新截取数据片段。
当上述第一哈希算法与所第二哈希算法为同一算法时,所述第二获取单元603为所述第一获取单元601,所以所述第一获取单元601还可以用于根据第二哈希算法对所述数据片段进行哈希运算(如图7所示),获取所述数据片段的第二摘要值。如图7所示,图7为本发明实施例的另一种构建目标数据的数据指纹的装置的结构框图。
所以根据本发明实施例的装置,当所述第一哈希算法的算法强度为2的N次方时,所述第二哈希算法的算法强度为2的M次方时,所述数据指纹的长度为N+M位。不管第一哈希算法和第二哈希算法相同还是不同,不管截取数据片段是从目标数据的头部、尾部还是通过特定算法截取,本发明实施例都不需要经过大量运算即可获得可靠性较高的数据指纹,减小了系统的工作负担,简单实用,并保证了最终生成的数据指纹的强度最弱也可以正常使用或抵御“碰撞攻击”。
需要说明的是,本发明实施例的装置可以集成电路或芯片中,包括CPU、或DSP(数字信号处理,Digital Signal Processing)、或通信芯片等,也可以是软件模块,也可以是软件和硬件的结合体。本发明实施例的各个单元可以集成于一体,也可以分离部署。上述单元可以合并为一个单元,也可以进一步拆分成多个子单元。
实施例五
本发明实施例还提供一种电子设备,如图8所示,该电子设备包括应用数据指纹的装置81和上述实施例提供的构建目标数据的数据指纹的装置82,其中:
构建目标数据的数据指纹的装置82,用于根据第一哈希算法对目标数据进行哈希运算,获取所述目标数据的第一摘要值,截取所述目标数据中的数据片段,根据第二哈希算法对所述数据片段进行哈希运算,获取所述数据片段的第二摘要值,根据所述第一摘要值和所述第二摘要值,生成所述目标数据的数据指纹。该构建目标数据的数据指纹的装置82的技术方案可以结合参考实施例一至实施例四提供的技术方案,在此不作赘述。
应用数据指纹的装置81可以用于:根据数据指纹判断该存储数据是否是系统中已经存在的重复数据或者根据数据指纹判断对应的目标数据是否已经存在等。
本发明实施例电子设备的类型可以是路由器、交换机、基站、基站控制器、数字用户线路接入复用器(DSLAM)、归属位置寄存器(Home Location Register,HLR)、手机、个人数码助理(Personal Digital Assistant,PDA)、计算机、服务器、机顶盒、家用电器、以及各种电子设备、网络设备或计算机相关设备等。
本发明实施例的有益效果在于,本发明实施例提供构建目标数据的数据指纹的技术不仅简单实用,运算量小,减小了系统的工作负担,而且生成的数据指纹唯一性、可靠性都非常高,保证了最终生成的数据指纹的最弱强度也可以正常使用或抵御“碰撞攻击”,大大提高了数据的安全性。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,或者二者的结合来实施。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该软件模块或计算机软件产品可以存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。存储介质可以是随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。