一种数据校验方法及装置与流程

文档序号:31875065发布日期:2022-10-21 21:15阅读:144来源:国知局
一种数据校验方法及装置与流程

1.本发明涉及数据校验技术领域,尤其涉及一种数据校验方法及装置。


背景技术:

2.散列函数,比如md5,是一个将任意长度的数据字符串转化成短的固定长度的值的单向操作。任意两个字符串不应有相同的散列值。
3.md5校验和(checksum)通过对接收的传输数据执行散列运算来检查数据的正确性。计算出的散列值拿来和随数据传输的散列值比较。如果两个值相同,说明传输的数据完整无误、没有被窜改过(前提是散列值没有被窜改),从而可以放心使用。
4.md5校验可以应用在多个领域,比如说机密资料的检验,下载文件的检验,明文密码的加密等。
5.基于内容的校验,无法应对内容被修改的场景,例如一个文件中,任意一段数据被修改,需要将全部数据重新进行计算,由此带来的性能开销很大。


技术实现要素:

6.本发明实施例提供一种数据校验方法及装置,用以在文件修改的情况下,降低生成修改后的数据校验值的运算量,提高信息摘要的效率。
7.本发明实施例提供一种数据校验方法,包括:
8.将目标数据文件拆分为多个子数据分块;
9.利用第一数据摘要算法计算各子数据分块的第一校验值;
10.拼接各子数据分块的第一校验值;
11.利用第二数据摘要算法计算拼接后的第一校验值的第二校验值,以获得目标数据文件的校验值。
12.在一些实施例中,在修改目标数据文件的情况下,所述数据校验方法还包括:
13.确定存在修改的子数据分块,并利用第一数据摘要算法重新计算该子数据分块的第一校验值;
14.基于重新计算的第一校验值以及其他不存在修改的子数据分块的校验值计算目标数据文件的校验值。
15.在一些实施例中,在拆分的子数据分块的数量超过预设数量阈值的情况下,所述数据校验方法还包括:
16.将多个子数据分块进行分组;
17.利用第一数据摘要算法计算任一组的各子数据分块的第一校验值并进行拼接;
18.利用第二数据摘要算法计算拼接后的第一校验值的第二校验值,并拼接第二校验值;
19.利用第三数据摘要算法计算拼接后的第二校验值的第三校验值,以获得目标数据文件的校验值。
20.在一些实施例中,将多个子数据分块进行分组包括:采用树状结构进行分组。
21.本技术实施例还提出一种数据校验装置,包括处理器被配置为:
22.将目标数据文件拆分为多个子数据分块;
23.利用第一数据摘要算法计算各子数据分块的第一校验值;
24.拼接各子数据分块的第一校验值;
25.利用第二数据摘要算法计算拼接后的第一校验值的第二校验值,以获得目标数据文件的校验值。
26.在一些实施例中,在修改目标数据文件的情况下,所述处理器还被配置为:
27.确定存在修改的子数据分块,并利用第一数据摘要算法重新计算该子数据分块的第一校验值;
28.基于重新计算的第一校验值以及其他不存在修改的子数据分块的校验值计算目标数据文件的校验值。
29.在一些实施例中,在拆分的子数据分块的数量超过预设数量阈值的情况下,所述处理器还被配置为:
30.将多个子数据分块进行分组;
31.利用第一数据摘要算法计算任一组的各子数据分块的第一校验值并进行拼接;
32.利用第二数据摘要算法计算拼接后的第一校验值的第二校验值,并拼接第二校验值;
33.利用第三数据摘要算法计算拼接后的第二校验值的第三校验值,以获得目标数据文件的校验值。
34.本技术实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述的方法的步骤。
35.本发明实施例通过将目标数据文件拆分成多个子数据分块,并基于多个子数据分块来计算校验值,以生成最终的校验值,由此可以在目标数据文件存在修改的情况下,仅重复计算对应的子数据分块的校验值,极大降低了运算量,提高信息摘要的效率。
36.上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
37.通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
38.图1为本技术实施例的数据校验方法的基本流程图;
39.图2为本技术实施例的数据校验方法数据分块拆分示例;
40.图3为本技术实施例的数据校验方法数据分块内容修改示例;
41.图4为本技术实施例的数据校验方法数据分块的分组示例。
具体实施方式
42.下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
43.本发明实施例提供一种数据校验方法,如图1所示,包括如下步骤:
44.在步骤s101中,将目标数据文件拆分为多个子数据分块。如图2所示,本示例中可以将目标数据文件拆分为n子数据分块。
45.在步骤s102中,利用第一数据摘要算法计算各子数据分块的第一校验值。本示例中所指的第一数据摘要算法可以是sha、md5和crc32等摘要算法。本示例中以第一数据摘要算法为md5算法为例,可以分别计算分块1-分块n的第一校验值(分块校验值)。
46.在步骤s103中,拼接各子数据分块的第一校验值。本示例中的拼接可以是将各分块校验值进行叠加或者数据的拼接。
47.在步骤s104中,利用第二数据摘要算法计算拼接后的第一校验值的第二校验值,以获得目标数据文件的校验值。
48.本示例中所指的第二数据摘要算法也可以第一数据摘要算法相同,也可以是sha、md5和crc32等摘要算法,例如第二数据摘要算法也采用md5算法,则满足:
49.目标数据文件的校验值=calcmd5(分块校验值-1+分块校验值-2+分块校验值-3+

+分块校验值-n)。
50.在一些实施例中,在修改目标数据文件的情况下,所述数据校验方法还包括:
51.确定存在修改的子数据分块,并利用第一数据摘要算法重新计算该子数据分块的第一校验值;
52.基于重新计算的第一校验值以及其他不存在修改的子数据分块的校验值计算目标数据文件的校验值。
53.具体的,如图3所示,分块2的数据存在修改的情形,则首先读出修改的数据分块(分块2),利用第一数据摘要算法重复计算分块2的第一校验值,获得新的分块校验值-2。
54.还是以第二数据摘要算法也采用md5算法为例,则满足:
55.目标数据文件的校验值=calcmd5(分块校验值-1+新的分块校验值-2+分块校验值-3+

+分块校验值-n)。
56.本发明实施例通过将目标数据文件拆分成多个子数据分块,并基于多个子数据分块来计算校验值,以生成最终的校验值,由此可以在目标数据文件存在修改的情况下,仅重复计算对应的子数据分块的校验值,极大降低了运算量,提高信息摘要的效率。
57.在一些实施例中,在拆分的子数据分块的数量超过预设数量阈值的情况下,所述数据校验方法还包括:
58.将多个子数据分块进行分组。具体的可以将固定数量的子数据分块分入一个组。在一些实施例中,将多个子数据分块进行分组还可以采用树状结构进行分组。
59.利用第一数据摘要算法计算任一组的各子数据分块的第一校验值并进行拼接。如图4所示,例如存在分块1-分块10000一共10000个分块,每1000个分块作为一组,则类似的例如可以利用md5计算任一组的各子数据分块的第一校验值,以此获得分块校验值-1~分
块校验值-10000。
60.利用第二数据摘要算法计算拼接后的第一校验值的第二校验值,并拼接第二校验值。例如可以利用md5计算任一组的第二校验值满足:
61.第一组的校验值=calcmd5(分块校验值-1+新的分块校验值-2+分块校验值-3+

+分块校验值-1000),以此类推。
62.利用第三数据摘要算法计算拼接后的第二校验值的第三校验值,以获得目标数据文件的校验值。
63.同理,第三数据摘要算法也可以与第一数据摘要算法相同,同样以第三数据摘要算法为md5来举例说明,满足:
64.目标数据文件的校验值=calcmd5(第一组的校验值+第二组的校验值+

+第十组的校验值)。
65.此时修改某个子数据分块,仅需要重新读取并计算对应组中的子数据分块的校验值,不需要计算全部分块校验值,由此极大提高了摘要运算的效率。本技术的方法从全部数据重新参与校验,优化为计算一个数据分块加若干校验码,大幅减少了内容修改情况下重新计算校验值的开销。
66.本技术实施例还提出一种数据校验装置,包括处理器被配置为:
67.将目标数据文件拆分为多个子数据分块;
68.利用第一数据摘要算法计算各子数据分块的第一校验值;
69.拼接各子数据分块的第一校验值;
70.利用第二数据摘要算法计算拼接后的第一校验值的第二校验值,以获得目标数据文件的校验值。
71.在一些实施例中,在修改目标数据文件的情况下,所述处理器还被配置为:确定存在修改的子数据分块,并利用第一数据摘要算法重新计算该子数据分块的第一校验值;
72.基于重新计算的第一校验值以及其他不存在修改的子数据分块的校验值计算目标数据文件的校验值。
73.在一些实施例中,在拆分的子数据分块的数量超过预设数量阈值的情况下,所述处理器还被配置为:
74.将多个子数据分块进行分组;
75.利用第一数据摘要算法计算任一组的各子数据分块的第一校验值并进行拼接;
76.利用第二数据摘要算法计算拼接后的第一校验值的第二校验值,并拼接第二校验值;
77.利用第三数据摘要算法计算拼接后的第二校验值的第三校验值,以获得目标数据文件的校验值。
78.本技术实施例还提出一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现前述的方法的步骤。
79.需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该
要素的过程、方法、物品或者装置中还存在另外的相同要素。
80.上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
81.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
82.上面结合附图对本发明的实施例进行了描述,但是本发明并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本发明的启示下,在不脱离本发明宗旨和权利要求所保护的范围情况下,还可做出很多形式,这些均属于本发明的保护之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1