CN113901395A - 数据处理方法、装置、计算机设备和存储介质 - Google Patents
数据处理方法、装置、计算机设备和存储介质 Download PDFInfo
- Publication number
- CN113901395A CN113901395A CN202111474538.2A CN202111474538A CN113901395A CN 113901395 A CN113901395 A CN 113901395A CN 202111474538 A CN202111474538 A CN 202111474538A CN 113901395 A CN113901395 A CN 113901395A
- Authority
- CN
- China
- Prior art keywords
- tree
- data
- hash tree
- target
- layer
- 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.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/17—Function evaluation by approximation methods, e.g. inter- or extrapolation, smoothing, least mean square method
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Data Mining & Analysis (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Optimization (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据处理方法、装置、计算机设备和存储介质。方法包括:终端发送的数据读取请求;根据数据读取请求所对应的存储文件,通过随机算法选取校验数据块;获取存储文件对应的目标哈希树,目标哈希树中包括根节点所在层至第M层的数据,M为正整数,根节点中存储有第一哈希值,每个叶子节点对应存储文件的一个数据块;根据校验数据块和目标哈希树计算目标哈希树的根节点对应的第二哈希值;若第一哈希值和第二哈希值相同,则将存储文件中与数据读取请求对应的数据返回至所述终端。本申请通过随机选取校验数据块对存储文件的真实性进行校验,可降低CDN节点的存储压力,降低校验计算复杂度,大大提高对用户所请求读取的数据安全性的校验效率。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种数据处理方法、装置、计算机设备和存储介质。
背景技术
随着内容分发网络(Content Delivery Network,CDN)的快速发展,越来越多的用户通过CDN来获取源服务器的文件数据。CDN是构建在现有网络基础之上的智能虚拟网络,由分布在不同区域的边缘节点服务器群组成的分布式网络,通过中心平台的负载均衡、内容分发、调度等功能模块,使用户就近获取所需内容,降低网络拥塞,提高用户访问响应速度和命中率。CDN应用广泛,支持多种行业、多种场景内容加速,例如:图片小文件、大文件下载、视音频点播、直播流媒体、全站加速、安全加速。因此,为了保证CDN节点中所存储文件的安全性,确认所存储文件是否被篡改是非常有必要的。
传统技术中,针对CDN节点中缓存的文件,在进行文件读取时对文件的安全性校验效率较低。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高文件安全性校验效率的数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
第一方面,本申请提供了一种数据处理方法。所述方法包括:
接收终端发送的数据读取请求;
根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
在其中一个实施例中,所述目标哈希树的生成方式,包括:
获取源服务器所发送的存储文件;
对所述存储文件进行分块,得到大小相同的多个数据块;
将所述多个数据块作为叶子节点内容构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值;
从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。
在其中一个实施例中,所述从所述初始哈希树中得到包含根节点所在层至第M层的目标哈希树,包括:
将所述初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层的目标哈希树。
在其中一个实施例中,所述从所述初始哈希树中得到包含根节点所在层至第M层的目标哈希树,包括:
计算所述初始哈希树中每层节点存储的数据的大小;
在所述初始哈希树中选取存储的数据的大小小于数据量阈值的目标层,得到包含根节点所在层至第M层的目标哈希树。
在其中一个实施例中,所述根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值,包括:
获取所述目标哈希树的参数信息和校验数据块信息;
根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值;
根据所述目标哈希树中第M层的目标节点哈希值,以及根节点所在层的下一层至第M层中除所述目标节点外的节点哈希值,计算所述目标哈希树的根节点对应的第二哈希值。
在其中一个实施例中,所述根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值,包括:
获取所述目标哈希树的叶子节点数、第M层的节点数、哈希树分叉数和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息;
根据所述目标哈希树的叶子节点数和第M层的节点数,确定重构树的叶子节点数量;所述重构树为所述目标哈希树的一部分,且所述重构树的叶子节点与所述目标哈希树的部分叶子节点相同;
根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据;
根据所述重构树的所有叶子节点数据和所述哈希树分叉数,确定所述重构树的根节点哈希值,将所述重构树的根节点哈希值作为所述目标哈希树中第M层的目标节点哈希值。
第二方面,本申请还提供了一种数据处理装置。所述装置包括:
接收模块,用于接收终端发送的数据读取请求;
选择模块,用于根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取模块,用于获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
计算模块,用于根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
返回模块,用于若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
第三方面,本申请还提供了一种计算机设备。所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
接收终端发送的数据读取请求;
根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
第四方面,本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
接收终端发送的数据读取请求;
根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
第五方面,本申请还提供了一种计算机程序产品。所述计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
接收终端发送的数据读取请求;
根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
上述数据处理方法、装置、计算机设备、存储介质和计算机程序产品,通过接收终端发送的数据读取请求;根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。本申请通过随机选取校验数据块,结合目标哈希树中保留的M层数据,即可对存储文件的真实性进行校验,降低了CDN节点的存储压力,同时降低了校验计算复杂度,可大大提高对用户所请求读取的数据安全性的校验效率。
附图说明
图1为一个实施例中数据处理方法的应用环境图;
图2为一个实施例中数据处理方法的流程示意图;
图3为一个实施例中目标哈希树的生成方式的流程示意图;
图4为另一个实施例中目标哈希树的生成方式的流程示意图;
图5为一个实施例中步骤308的流程示意图;
图6为一个实施例中步骤208的流程示意图;
图7为一个实施例中步骤604的流程示意图;
图8为一个实施例中目标哈希树和重构树的结构示意图;
图9为一个实施例中数据处理装置的结构框图;
图10为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与CDN节点104进行通信,CDN节点104与源服务器106连接,源服务器106将需要存储的文件发送至CDN节点104中。终端102向CDN节点104发起数据读取请求,CDN节点104接收终端发送的数据读取请求;根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端102。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。CDN是构建在现有网络基础之上的智能虚拟网络,由分布在不同区域的边缘节点服务器群组成的分布式网络,CDN中分布在不同区域的边缘节点服务器称为CDN节点104,源服务器106可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
随着CDN内容分发网络的快速发展,越来越多的用户通过CDN节点来获取源服务器的文件数据,为了保证CDN节点中存储文件的安全性,校验CDN节点中的存储文件是否被篡改是有必要的。现有的篡改校验技术一般是基于计算文件哈希值的方式,这种方式又分为全量计算文件哈希值和选取文件部分计算哈希值。全量计算文件哈希值的方式是指选取存储文件的全部数据进行校验,这种方式在针对大文件的篡改校验时会花费大量的时间;而选取文件部分计算哈希值的方式,一般是选取固定位置上的数据来计算哈希值,比如选取文件头、文件尾以及中间的部分数据,但是未被选取的部分的数据是否被篡改不能被准确校验出来,校验的准确性较低,导致用户读取的数据安全性较低。
在一个实施例中,如图2所示,提供了一种数据处理方法,以该方法应用于图1中的CDN节点为例进行说明,包括以下步骤:
步骤202,接收终端发送的数据读取请求。
用户从终端向CDN节点发起数据读取请求,CDN节点收到用户从终端发送的数据读取请求后,根据数据读取请求,将对应数据返回给终端。
步骤204,根据数据读取请求所对应的存储文件,通过随机算法选取校验数据块。
存储文件通常考虑为以数据块的形式存储在CDN节点中,也就是说,一个存储文件可划分为多个数据块,接收到终端发送的数据读取请求后,根据数据读取请求所对应的存储文件,通过随机算法从存储文件对应的多个数据块中,选取校验数据块对所读取数据的准确性进行校验。其中,校验数据块可以是存储文件对应的多个数据块中的一个或多个。
在一个可选的实现方式中,根据数据读取请求所对应的存储文件的大小,确定所选取的校验数据块的数量,然后根据随机算法选取相应数量的校验数据块。一般来说,数据读取请求所对应的存储文件越大,选取的校验数据块越多,校验的结果就越准确。
步骤206,获取存储文件对应的目标哈希树,目标哈希树中包括根节点所在层至第M层的数据,M为正整数,根节点中存储有第一哈希值,每个叶子节点对应存储文件的一个数据块。
哈希树,也称默克尔树(merkle),是一种树型结构,由一个根节点、一组中间节点和一组叶节点组成,最下面的叶子节点可以存储有具体的文件数据或文件数据的哈希值,每个中间节点及根节点都是对应各子节点内容的哈希值,哈希树通过对数据的逐级哈希(Hash)操作确保数据的不可篡改性。叶子节点数据的任何变动,都会传递到上一级节点并最终反应到根节点的变化。目标哈希树可以是以数据块数据或数据块数据的哈希值作为叶子节点,根据预设分叉数构造成的哈希树结构,但是目标哈希树中存储的数据只有根节点所在层至第M层的数据。其中,M为正整数,M小于或等于目标哈希树的总层数;分叉数是多少,代表一个根节点有多少个子节点。目标哈希树的根节点中存储有第一哈希值,第一哈希值是将存储文件对应的数据块数据作为叶子节点而构造的哈希树的根节点的哈希值,而且每个叶子节点对应存储文件的一个数据块。
步骤208,根据校验数据块和目标哈希树计算目标哈希树的根节点对应的第二哈希值。
选取的校验数据块作为目标哈希树中的一个或多个叶子节点,结合目标哈希树的结构,计算出目标哈希树的部分连续的叶子节点,根据该部分连续的叶子节点从下往上计算目标哈希树中其他节点的哈希值,直至计算得到至少有一个位于第M层中的节点哈希值,并替换对应节点的原始哈希值,结合目标哈希树中所存储的节点数据,计算目标哈希树的根节点对应的第二哈希值。
步骤210,若第一哈希值和第二哈希值相同,则将存储文件中与数据读取请求对应的数据返回至所述终端。
若第一哈希值和第二哈希值相同,说明当前CDN节点中存储的数据与原始写入的数据一致,并没有被篡改,则将存储文件中与数据读取请求对应的数据返回至用户终端。
上述数据处理方法,通过接收终端发送的数据读取请求,根据数据读取请求所对应的存储文件,通过随机算法选取校验数据块;获取存储文件对应的目标哈希树,目标哈希树中包括根节点所在层至第M层的数据,M为正整数,根节点中存储有第一哈希值,每个叶子节点对应存储文件的一个数据块;根据校验数据块和目标哈希树计算目标哈希树的根节点对应的第二哈希值;若第一哈希值和第二哈希值相同,则将存储文件中与数据读取请求对应的数据返回至所述终端。通过随机选取校验数据块,结合目标哈希树中保留的M层数据,即可对存储文件的真实性进行校验,目标哈希树中只存储了部分数据,降低了CDN节点的存储压力,同时降低了校验计算复杂度,可大大提高对用户所请求读取的数据安全性的校验效率。
在一个实施例中,如图3所示,目标哈希树的生成方式,包括:
步骤302,获取源服务器所发送的存储文件。
步骤304,对存储文件进行分块,得到大小相同的多个数据块。
根据CDN节点的存储情况及具体要求,对存储文件进行分块,得到预设数量的大小相同的多个数据块。
步骤306,将多个数据块作为叶子节点内容构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值。
可将多个数据块对应的数据块内容对应的哈希值作为叶子节点的内容,根据预设的哈希树分叉数构建初始哈希树。其中,预设的哈希树分叉数可以是2或者其他大于2的整数,即初始哈希树可以是二叉树或者多叉树,具体可根据需要进行设定。
步骤308,从初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。
初始哈希树中,将叶子节点所在层开始往上至第M-1层的数据舍弃,选取包含根节点所在层至第M层数据后,成为目标哈希树。其中,M小于等于初始哈希树的总层数。
在一个可选的实施方式中,如图4所示,目标哈希树的生成方式包括:
步骤402,获取源服务器所发送的存储文件。
步骤404,将存储文件进行分块,得到n个大小相同的数据块。
将存储文件进行均匀分块,得到n个大小相同的数据块,其中,n为大于1的正整数。
步骤406,将n个数据块作为叶子节点内容,以四叉树的形式构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值。
步骤408,从初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。
将n个数据块作为叶子节点内容,以四叉树的形式构建初始哈希树,并计算初始哈
希树的根节点存储的第一哈希值。那么初始哈希树的总层数为,即初始哈希树
的根节点存储的第一哈希值,是由初始哈希树的层数据计算得到。从初始哈希
树中得到包含根节点所在层至第M层数据的目标哈希树,其中,。需要说
明的是,本实施例是以四叉树的形式构建初始哈希树为例进行说明,初始哈希树也可以是
其他分叉数,例如初始哈希树可以是K叉树,其中,K为大于等于2的整数,对应地,K叉树的总
层数为。
上述实施例中,将初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树,即目标哈希树中并不是将初始哈希树的所有层的数据都保留,可降低CDN节点的存储压力。
在一个实施例中,从初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树的步骤308,包括:
将所述初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层的目标哈希树。
本实施例中,可预先设置好预设层,将初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层的目标哈希树。或者,可以预先设置好目标哈希树保留的数据层数M,将初始哈希树中根节点所在层开始至第M层数据取出得到目标哈希树。
在一个实施例中,如图5所示,从初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树的步骤308,包括:
步骤502,计算初始哈希树中每层节点存储的数据的大小。
步骤504,在初始哈希树中选取存储的数据的大小小于数据量阈值的目标层,得到包含根节点所在层至第M层数据的目标哈希树。
本实施例中,根据存储文件的大小,提前设置一个数据量阈值,通过计算初始哈希树中每层节点存储的数据的大小,在初始哈希树中选取存储的数据的大小小于数据量阈值的目标层,由于在哈希树中,叶子节点所在层的数据量最大,越靠近根节点层的层数据量越小,则该目标层即是从根节点所在层至第M层,从而得到包含根节点所在层至第M层数据的目标哈希树。例如,设置数据量阈值为1/64GB,则选取存储数据小于1/64GB的目标层,存储数据大于1/64GB的层中的数据进行舍弃。
在一个实施例中,如图6所示,根据校验数据块和目标哈希树计算目标哈希树的根节点对应的第二哈希值的步骤208,包括:
步骤602,获取目标哈希树的参数信息和校验数据块信息。
目标哈希树中包括根节点所在层至第M层数据,具有与初始哈希树相同的树结构,因此,目标哈希树的参数信息包括目标哈希树的叶子节点数、第M层节点数、分叉数、总层数等信息。校验数据块信息包括校验数据块对应叶子节点在目标哈希树中的位置信息,以及对应叶子节点的数据。
步骤604,根据校验数据块信息和目标哈希树的参数信息,确定目标哈希树中第M层的目标节点哈希值。
根据校验数据块信息和目标哈希树的参数信息,可确定至少一个位于目标哈希树中第M层的节点哈希值,该节点哈希值即为目标节点哈希值。其中,目标节点至少为一个。
步骤606,根据目标哈希树中第M层的目标节点哈希值,以及根节点所在层的下一层至第M层中除目标节点外的节点哈希值,计算目标哈希树的根节点对应的第二哈希值。
在一个可能的实现方式中,将目标哈希树中第M层的目标节点哈希值替换相应节点中原来的哈希值,再结合目标哈希树中除根节点中存储的第一哈希值之外的数据,计算目标哈希树的根节点对应的第二哈希值。
在一个实施例中,如图7所示,根据校验数据块信息和目标哈希树的参数信息,确定目标哈希树中第M层的目标节点哈希值的步骤604,包括:
步骤702,获取目标哈希树的叶子节点数、第M层的节点数、哈希树分叉数和校验数据块对应的叶子节点在目标哈希树中的位置信息。
步骤704,根据目标哈希树的叶子节点数和第M层的节点数,确定重构树的叶子节点数量;重构树为目标哈希树的一部分,且重构树的叶子节点与所述目标哈希树的部分叶子节点相同。
在一个可能的实现方式中,将目标哈希树的叶子节点数除以第M层的节点数,得到重构树的叶子节点数量。其中,重构树的叶子节点与目标哈希树的部分叶子节点相同,且重构树为目标哈希树的一部分。
步骤706,根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据。
在一个可选的实施例中,根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的开始叶子节点和末尾叶子节点的位置信息;根据重构树的开始叶子节点和末尾叶子节点的位置信息,获取重构树的所有叶子节点的位置信息及对应的数据。
在另一个可选的实施例中,根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的开始叶子节点位置信息;根据所述重构树的开始叶子节点位置信息和重构树的叶子节点数量,获取重构树的所有叶子节点的位置信息及对应的数据。
步骤708,根据重构树的所有叶子节点数据和哈希树分叉数,确定重构树的根节点哈希值,将重构树的根节点哈希值作为目标哈希树中第M层的目标节点哈希值。
根据重构树的所有叶子节点数据和哈希树分叉数,从下往上确定重构树的根节点哈希值,将重构树的根节点哈希值作为目标哈希树中第M层的目标节点哈希值。
在一个可能的实现方式中,借助图8进行说明,根据校验数据块信息和目标哈希树的参数信息,确定目标哈希树中第M层的目标节点哈希值的步骤604,包括:
(1)获取目标哈希树的叶子节点数R,即为存储文件进行分块得到的数据块数量;
第M层的节点数为R1,其中,K为目标哈希树的分叉数,分叉数通常是预先设置
好的,即第M层的节点数R1,是以哈希树的分叉数K为底,M-1为指数的计算结果;随机选取的
一个校验数据块对应的叶子节点在目标哈希树中的位置记为i。
(2)重构树的叶子节点数R2=R/R1。
(3)重构树的开始叶子节点位置信息i 0 ,其中,即将校验数据块
对应的叶子节点在目标哈希树中的位置i与重构树的叶子节点数R 2 的商进行取整,取整结
果再乘以重构树的叶子节点数R 2 ,得到重构树的开始叶子节点位置信息i 0 ,重构树的开始叶
子节点位置信息i 0 向后移动重构树的叶子节点数减1对应的长度,得到重构树的末尾叶子
节点位置信息i m ,选取重构树的开始叶子节点至末尾叶子节点的所有叶子节点的位置信
息,根据初始哈希树中存储的叶子节点数据,得到重构树的所有叶子节点的位置信息及存
储的哈希值。
(4)根据重构树的所有叶子节点存储的哈希值,按照目标哈希树的分叉数,自下而上计算重构树的根节点哈希值,将重构树的根节点的哈希值作为目标哈希树中第M层的目标节点哈希值。
综上所述,如图8所示,若目标哈希树为M+N层结构的树,但是目标哈希树只保留有根节点所在层至第M层的数据,则重构树是一个N+1层结构的树,且重构树的根节点所在层即是目标哈希树的第M层。
若随机选取有多个校验数据块,则每个校验数据块按照上述步骤(1)~(4)依次计算得到最终的目标哈希树中第M层的多个目标节点哈希值。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据处理方法的数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据处理装置实施例中的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。
在一个实施例中,如图9所示,提供了一种数据处理装置,包括:接收模块902、选择模块904、获取模块906、计算模块908和返回模块910,其中:
接收模块902,用于接收终端发送的数据读取请求。
选择模块904,用于根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块。
获取模块906,用于获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块。
计算模块908,用于根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值。
返回模块910,用于若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
在一个实施例中,数据处理装置还包括哈希模块,用于实现目标哈希树的生成方式,包括:
获取单元,用于获取源服务器所发送的存储文件;
分块单元,用于对所述存储文件进行分块,得到大小相同的多个数据块;
构建单元,用于将所述多个数据块作为叶子节点内容构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值;
生成单元,用于从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。
在一个实施例中,生成单元,还用于:将所述初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层的目标哈希树。
在一个实施例中,生成单元,还用于:计算所述初始哈希树中每层节点存储的数据的大小;在所述初始哈希树中选取存储的数据的大小小于数据量阈值的目标层,得到包含根节点所在层至第M层的目标哈希树。
在一个实施例中,计算模块908,包括:
信息单元,用于获取所述目标哈希树的参数信息和校验数据块信息。
确定单元,根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值。
计算单元,用于根据所述目标哈希树中第M层的目标节点哈希值,以及根节点所在层的下一层至第M层中除所述目标节点外的节点哈希值,计算所述目标哈希树的根节点对应的第二哈希值。
在一个实施例中,确定单元包括:
获取模组,用于获取所述目标哈希树的叶子节点数、第M层的节点数、哈希树分叉数和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息。
第一确定模组,用于根据所述目标哈希树的叶子节点数和第M层的节点数,确定重构树的叶子节点数量;所述重构树为所述目标哈希树的一部分,且所述重构树的叶子节点与所述目标哈希树的部分叶子节点相同。
第二确定模组,用于根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据。
第三确定模组,用于根据所述重构树的所有叶子节点数据和所述哈希树分叉数,确定所述重构树的根节点哈希值,将所述重构树的根节点哈希值作为所述目标哈希树中第M层的目标节点哈希值。
在一个实施例中,第二确定模组,还用于根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的开始叶子节点和末尾叶子节点的位置信息;根据重构树的开始叶子节点和末尾叶子节点的位置信息,获取重构树的所有叶子节点的位置信息及对应的数据。
在一个实施例中,第二确定模组,还用于根据重构树的叶子节点数量和校验数据块对应的叶子节点在目标哈希树中的位置信息,确定重构树的开始叶子节点位置信息;根据所述重构树的开始叶子节点位置信息和重构树的叶子节点数量,获取重构树的所有叶子节点的位置信息及对应的数据。
上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图10所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储目标哈希树中的根节点数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据处理方法。
本领域技术人员可以理解,图10中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现以下步骤:
接收终端发送的数据读取请求;
根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:
接收终端发送的数据读取请求;
根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:
接收终端发送的数据读取请求;
根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random Access Memory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (10)
1.一种数据处理方法,其特征在于,所述方法包括:
接收终端发送的数据读取请求;
根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
若所述第一哈希值和所述第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
2.根据权利要求1所述的方法,其特征在于,所述目标哈希树的生成方式,包括:
获取源服务器所发送的存储文件;
对所述存储文件进行分块,得到大小相同的多个数据块;
将所述多个数据块作为叶子节点内容构建初始哈希树,并计算初始哈希树的根节点存储的第一哈希值;
从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树。
3.根据权利要求2所述的方法,其特征在于,所述从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树,包括:
将所述初始哈希树中从叶子节点层开始的预设层数据舍弃,得到包含根节点所在层至第M层数据的目标哈希树。
4.根据权利要求2所述的方法,其特征在于,所述从所述初始哈希树中得到包含根节点所在层至第M层数据的目标哈希树,包括:
计算所述初始哈希树中每层节点存储的数据的大小;
在所述初始哈希树中选取存储的数据的大小小于数据量阈值的目标层,得到包含根节点所在层至第M层数据的目标哈希树。
5.根据权利要求1所述的方法,其特征在于,所述根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值,包括:
获取所述目标哈希树的参数信息和校验数据块信息;
根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值;
根据所述目标哈希树中第M层的目标节点哈希值,以及根节点所在层的下一层至第M层中除所述目标节点外的节点哈希值,计算所述目标哈希树的根节点对应的第二哈希值。
6.根据权利要求5所述的方法,其特征在于,所述根据所述校验数据块信息和所述目标哈希树的参数信息,确定所述目标哈希树中第M层的目标节点哈希值,包括:
获取所述目标哈希树的叶子节点数、第M层的节点数、哈希树分叉数和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息;
根据所述目标哈希树的叶子节点数和第M层的节点数,确定重构树的叶子节点数量;所述重构树为所述目标哈希树的一部分,且所述重构树的叶子节点与所述目标哈希树的部分叶子节点相同;
根据所述重构树的叶子节点数量和所述校验数据块对应的叶子节点在所述目标哈希树中的位置信息,确定重构树的所有叶子节点的位置信息及对应的数据;
根据所述重构树的所有叶子节点数据和所述哈希树分叉数,确定所述重构树的根节点哈希值,将所述重构树的根节点哈希值作为所述目标哈希树中第M层的目标节点哈希值。
7.一种数据处理装置,其特征在于,所述装置包括:
接收模块,用于接收终端发送的数据读取请求;
选择模块,用于根据所述数据读取请求所对应的存储文件,通过随机算法选取校验数据块;
获取模块,用于获取所述存储文件对应的目标哈希树,所述目标哈希树中包括根节点所在层至第M层的数据,所述M为正整数,所述根节点中存储有第一哈希值,每个叶子节点对应所述存储文件的一个数据块;
计算模块,用于根据所述校验数据块和所述目标哈希树计算所述目标哈希树的根节点对应的第二哈希值;
返回模块,用于若第一哈希值和第二哈希值相同,则将所述存储文件中与所述数据读取请求对应的数据返回至所述终端。
8.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述的方法的步骤。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
10.一种计算机程序产品,包括计算机程序,其特征在于,该计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111474538.2A CN113901395B (zh) | 2021-12-06 | 2021-12-06 | 数据处理方法、装置、计算机设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111474538.2A CN113901395B (zh) | 2021-12-06 | 2021-12-06 | 数据处理方法、装置、计算机设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113901395A true CN113901395A (zh) | 2022-01-07 |
CN113901395B CN113901395B (zh) | 2022-03-18 |
Family
ID=79195349
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111474538.2A Active CN113901395B (zh) | 2021-12-06 | 2021-12-06 | 数据处理方法、装置、计算机设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113901395B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114329636A (zh) * | 2022-03-04 | 2022-04-12 | 人民法院信息技术服务中心 | 一种司法数据的访问控制方法、系统、设备及存储介质 |
CN117081726A (zh) * | 2023-09-13 | 2023-11-17 | 浪潮数字(山东)建设运营有限公司 | 一种文件的分块分级传输方法和装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546731A (zh) * | 2010-12-30 | 2012-07-04 | 中国移动通信集团公司 | 点对点流媒体系统的子块完整性校验方法和系统 |
CN106815530A (zh) * | 2016-12-26 | 2017-06-09 | 北京爱接力科技发展有限公司 | 数据存证方法、数据校验方法及装置 |
CN109889505A (zh) * | 2019-01-23 | 2019-06-14 | 平安科技(深圳)有限公司 | 数据持有性验证方法及终端设备 |
CN113259345A (zh) * | 2021-05-12 | 2021-08-13 | 国网山东省电力公司东平县供电公司 | 一种智能配电网数据安全传输方法、系统和存储介质 |
-
2021
- 2021-12-06 CN CN202111474538.2A patent/CN113901395B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546731A (zh) * | 2010-12-30 | 2012-07-04 | 中国移动通信集团公司 | 点对点流媒体系统的子块完整性校验方法和系统 |
CN106815530A (zh) * | 2016-12-26 | 2017-06-09 | 北京爱接力科技发展有限公司 | 数据存证方法、数据校验方法及装置 |
CN109889505A (zh) * | 2019-01-23 | 2019-06-14 | 平安科技(深圳)有限公司 | 数据持有性验证方法及终端设备 |
CN113259345A (zh) * | 2021-05-12 | 2021-08-13 | 国网山东省电力公司东平县供电公司 | 一种智能配电网数据安全传输方法、系统和存储介质 |
Non-Patent Citations (2)
Title |
---|
THIVYA KANDAPPU ET AL.: "A Novel Unbalanced Tree Structure for Low-Cost Authentication of Streaming Content on Mobile and Sensor Devices", 《2012 9TH ANNUAL IEEE COMMUNICATIONS SOCIETY CONFERENCE ON SENSOR, MESH AND AD HOC COMMUNICATIONS AND NETWORKS (SECON)》 * |
刘竹松 等: "基于Merkle哈希树的云存储加密数据去重复研究", 《计算机工程与应用》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114329636A (zh) * | 2022-03-04 | 2022-04-12 | 人民法院信息技术服务中心 | 一种司法数据的访问控制方法、系统、设备及存储介质 |
CN114329636B (zh) * | 2022-03-04 | 2022-05-20 | 人民法院信息技术服务中心 | 一种司法数据的访问控制方法、系统、设备及存储介质 |
CN117081726A (zh) * | 2023-09-13 | 2023-11-17 | 浪潮数字(山东)建设运营有限公司 | 一种文件的分块分级传输方法和装置 |
CN117081726B (zh) * | 2023-09-13 | 2024-03-19 | 浪潮数字(山东)建设运营有限公司 | 一种文件的分块分级传输方法和装置 |
Also Published As
Publication number | Publication date |
---|---|
CN113901395B (zh) | 2022-03-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113901395B (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN111444196B (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
US10896171B2 (en) | Big data blockchains with Merkle trees | |
CN106874348A (zh) | 文件存储和索引方法、装置及读取文件的方法 | |
CN111444192A (zh) | 块链式账本中全局状态的哈希的生成方法、装置及设备 | |
CN114089921A (zh) | 电力系统数据存储方法、装置、计算机设备和存储介质 | |
WO2022087837A1 (en) | Blockchain system having efficient world state data structures | |
CN111158606B (zh) | 存储方法、装置、计算机设备和存储介质 | |
CN115168499B (zh) | 数据库表的分片方法、装置、计算机设备和存储介质 | |
CN113778346A (zh) | 数据读取方法、装置、设备和存储介质 | |
CN114489770A (zh) | 灰度发布方法、装置、计算机设备和存储介质 | |
CN110874486B (zh) | 一种块链式账本中的数据读取方法、装置及设备 | |
CN117220947B (zh) | 基于区块链的数据存证方法、装置、计算机设备、存储介质和程序产品 | |
CN116881450A (zh) | 资讯分类方法、装置、计算机设备、存储介质和程序产品 | |
CN117391702A (zh) | 账户数据的验证方法、装置、计算机设备、存储介质 | |
CN117459519A (zh) | 可回溯文件处理方法、装置、计算机设备和存储介质 | |
CN114332438A (zh) | 三维场景分区加载方法、装置、计算机设备和存储介质 | |
CN114239502A (zh) | 在线编辑文件的方法、装置、计算机设备和存储介质 | |
CN115118616A (zh) | 展示结果测试方法、装置、计算机设备和存储介质 | |
CN117370684A (zh) | 船舶数据的渲染方法、装置、计算机设备和存储介质 | |
CN116401292A (zh) | 数据排序方法、装置、计算机设备和存储介质 | |
CN116094770A (zh) | 数据一致性校验方法、装置、系统和计算机设备 | |
CN117743299A (zh) | 数据库迁移方法、装置、设备、介质和产品 | |
CN113987322A (zh) | 指标数据查询方法、装置、计算机设备和计算机程序产品 | |
CN117931825A (zh) | 序列号生成方法、系统、装置、计算机设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |