CN113553627B - 基于区块链的数据完整性验证方法、系统、设备及介质 - Google Patents
基于区块链的数据完整性验证方法、系统、设备及介质 Download PDFInfo
- Publication number
- CN113553627B CN113553627B CN202111111851.XA CN202111111851A CN113553627B CN 113553627 B CN113553627 B CN 113553627B CN 202111111851 A CN202111111851 A CN 202111111851A CN 113553627 B CN113553627 B CN 113553627B
- Authority
- CN
- China
- Prior art keywords
- data
- original
- real
- integrity information
- cloud storage
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于区块链的数据完整性验证方法、系统、设备及介质,该方法包括:接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果。通过将原始数据的完整性信息存储到区块链网络中,并在区块链网络中进行数据完整性验证,从而保证原始数据完整性信息不被篡改和删除,提高数据完整性验证的可靠性。
Description
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于区块链的数据完整性验证方法、系统、设备及介质。
背景技术
随着云计算与大数据技术的日趋成熟,越来越多的企业和组织选择将业务部署到云上,以获取更灵活的资源利用和扩展性,更高效快速地开展业务,优化其运营成本。当用户将数据保存到云存储中时,现有技术为了保护数据的完整性,通常生成与数据对应的完整性证据并与原数据一同存放,或采用第三方数据库存储完整性证据,这种方式没有考虑到数据完整性证据可能随着数据的更改而更改,一旦完整性证据随着原始数据的篡改而篡改或被意外删除,数据完整性的验证也就失效了。
由此可见,现有技术对数据完整性的验证存在不可靠的问题。
发明内容
本发明的主要目的在于提供一种基于区块链的数据完整性验证方法、系统、设备及介质,旨在解决现有技术对数据完整性的验证存在不可靠的技术问题。
根据本发明的第一方面,提供了一种基于区块链的数据完整性验证方法,用于服务器,所述服务器包含区块链网络,所述区块链网络中存储有原始数据的原始完整性信息;
所述方法包括以下步骤:
接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;
查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由所述原始数据基于所述预设数据处理规则生成。
可选地,所述原始完整性信息包括所述原始数据的原始数据长度;
所述接收用户端发送的实时完整性信息的步骤之前,所述方法还包括:
接收所述用户端发送的第二请求;
基于所述第二请求,获取所述原始数据的原始数据长度;
发送所述原始数据长度至所述用户端,以使所述用户端基于所述原始数据长度,对编码块进行解码,以获取所述云存储数据;其中,所述云存储数据由编码块解码生成,所述编码块由所述原始数据编码生成。
可选地,所述实时完整性信息包括实时数据ID、实时数据长度及实时数据Hash;
所述原始完整性信息包括原始数据ID、原始数据长度及原始数据Hash;
所述查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果的步骤,包括:
查找所述区块链网络中是否存在与所述实时数据ID一致的原始数据ID和与所述实时数据长度一致的原始数据长度和与所述实时数据Hash一致的原始数据Hash;
若存在,则获得所述云存储数据完整性正确的结果。
根据本发明的第二方面,提供了一种基于区块链的数据完整性验证方法,用于用户端,所述方法包括以下步骤:
获取云存储数据;
基于预设数据处理规则对所述云存储数据进行处理,以获取实时完整性信息;
将所述实时完整性信息发送至服务器,以使所述服务器查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由原始数据基于所述预设数据处理规则生成。
可选地,所述云存储数据由编码块解码生成,所述编码块存储在云存储平台;
所述获取云存储数据的步骤,包括:
发送第一请求至所述云存储平台,以获取所述云存储数据对应的编码块,以及
发送第二请求至所述服务器,以使所述服务器基于所述第二请求,获取所述原始数据的原始数据长度;其中,所述编码块由所述原始数据编码生成;
接收所述服务器发送的所述原始数据长度;
基于所述原始数据长度,对所述编码块进行解码,以获取云存储数据。
可选地,
所述基于预设数据处理规则对所述云存储数据进行处理,以获取实时完整性信息的步骤,包括:
计算所述云存储数据的通用唯一识别码UUID得到第一计算结果,并将所述第一计算结果确定为实时数据ID;
计算所述云存储数据的长度得到第二计算结果,并将所述第二计算结果确定为实时数据长度;
通过Hash函数计算所述云存储数据得到第三计算结果,并将所述第三计算结果确定为实时数据Hash;
基于所述实时数据ID、实时数据长度及实时数据Hash,获取所述实时完整性信息。
根据本发明的第三方面,提供了一种基于区块链的数据完整性验证系统,包括:
服务器,用于接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述服务器包含所述区块链网络,所述区块链网络中存储有原始数据的原始完整性信息,所述原始完整性信息由所述原始数据基于所述预设数据处理规则生成;
用户端,用于获取所述云存储数据;基于所述预设数据处理规则对所述云存储数据进行处理,以获取所述实时完整性信息;将所述实时完整性信息发送至所述服务器,以使所述服务器查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由所述原始数据基于所述预设数据处理规则生成。
根据本发明的第四方面,提供了一种服务器,包括:存储器、处理器以及存储在所述存储器并可在所述处理器上运行的基于区块链的数据完整性验证程序,所述基于区块链的数据完整性验证程序在被所述处理器执行时实现第一方面的实现方式中的任一种可能的实现方式中所述的各个步骤。
根据本发明的第五方面,提供了一种基于区块链的数据完整性验证设备,用于用户端,包括:存储器、处理器以及存储在所述存储器并可在所述处理器上运行的基于区块链的数据完整性验证程序,所述基于区块链的数据完整性验证程序在被所述处理器执行时实现第二方面的实现方式中的任一种可能的实现方式中所述的各个步骤。
根据本发明的第六方面,提供了一种存储介质,其上存储有基于区块链的数据完整性验证程序,所述基于区块链的数据完整性验证程序被处理器执行时实现第一方面和第二方面的实现方式中的任一种可能的实现方式中所述的各个步骤。
本发明的实施例提出一种基于区块链的数据完整性验证方法,该方法包括:接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果。通过将原始数据的完整性信息存储到区块链网络中,并在区块链网络中进行数据完整性验证,从而保证原始数据完整性信息不被篡改和删除,提高数据完整性验证的可靠性。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例方案涉及的硬件运行环境的服务器结构示意图;
图2为本发明基于区块链的数据完整性验证方法第一实施例的流程示意图;
图3为本发明基于区块链的数据完整性验证方法第二实施例的流程示意图;
图4为本发明基于区块链的数据完整性验证装置第一实施例的结构框图;
图5为本发明基于区块链的数据完整性验证装置第二实施例的结构框图;
图6为本发明基于区块链的数据完整性验证系统第一实施例的结构框图;
图7为本发明实施例方案涉及的场景第一实施例的示意图;
图8为本发明实施例方案涉及的场景第二实施例的示意图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
本发明实施例的主要解决方案是:接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果。
由于现有技术对数据完整性的验证存在不可靠的问题。
本发明提供一种解决方案,通过将原始数据的完整性信息存储到区块链网络中,并在区块链网络中进行数据完整性验证,从而保证原始数据完整性信息不被篡改和删除,提高数据完整性验证的可靠性。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的说明书和权利要求书中的“第一”、“第二”用于区别类似的对象,而不必用于描述特定的顺序或者先后次序,应该理解这样的数据在适当的情况下可以互换,以便这里描述的实施例能够以除了这里图示或者描述的那些以外的顺序实施。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的服务器结构示意图。
通常,服务器包括:至少一个处理器1001、存储器1002以及存储在所述存储器上并可在所述处理器上运行的基于区块链的数据完整性验证程序,所述基于区块链的数据完整性验证程序配置为实现如前所述的基于区块链的数据完整性验证方法的步骤。
处理器1001可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器1001可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器1001也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(CentralProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器1001可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。处理器1001还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关基于区块链的数据完整性验证方法的操作,使得基于区块链的数据完整性验证方法模型可以自主训练学习,提高效率和准确度。
存储器1002可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器1002还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器1002中的非暂态的计算机可读存储介质用于存储至少一个指令,该至少一个指令用于被处理器1001所执行以实现本申请中方法实施例提供的基于区块链的数据完整性验证方法。
在一些实施例中,终端还可选包括有:通信接口1003和至少一个外围设备。处理器1001、存储器1002和通信接口1003之间可以通过总线或信号线相连。各个外围设备可以通过总线、信号线或电路板与通信接口1003相连。具体地,外围设备包括:射频电路1004、显示屏1005和电源1006中的至少一种。
通信接口1003可被用于将I/O(Input/Output,输入/输出)相关的至少一个外围设备连接到处理器1001和存储器1002。在一些实施例中,处理器1001、存储器1002和通信接口1003被集成在同一芯片或电路板上;在一些其他实施例中,处理器1001、存储器1002和通信接口1003中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路1004用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路1004通过电磁信号与通信网络以及其他通信设备进行通信。射频电路1004将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路1004包括:天线系统、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路1004可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路1004还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏1005用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏1005是触摸显示屏时,显示屏1005还具有采集在显示屏1005的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器1001进行处理。此时,显示屏1005还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏1005可以为一个,电子设备的前面板;在另一些实施例中,显示屏1005可以为至少两个,分别设置在电子设备的不同表面或呈折叠设计;在一些实施例中,显示屏1005可以是柔性显示屏,设置在电子设备的弯曲表面上或折叠面上。甚至,显示屏1005还可以设置成非矩形的不规则图形,也即异形屏。显示屏1005可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
电源1006用于为电子设备中的各个组件进行供电。电源1006可以是交流电、直流电、一次性电池或可充电电池。当电源1006包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。本领域技术人员可以理解,图1中示出的结构并不构成对服务器的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
用户端的结构参照上述服务器的结构,此处不再赘述。
基于上述硬件结构,提出本发明基于区块链的数据完整性验证方法的实施例。
参照图2,图2为本发明基于区块链的数据完整性验证方法第一实施例的流程示意图,方法用于服务器,所述服务器包含区块链网络,所述区块链网络中存储有原始数据的原始完整性信息;
所述方法包括以下步骤:
S100,接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;
需要说明的是,本实施例的执行主体为服务器,服务器是计算机的一种,在网络中为其他终端设备提供计算或应用服务。可以理解,服务器通过网络与用户端进行交互,在进行交互之前,用户端需要向服务器申请区块链服务的账户。具体地,用户端通过服务器申请区块链账户并保存账户的公私钥。其中,账户的公私钥由服务器发送给申请区块链账户的用户端。需要说明的是,服务器可提供CA(Certificate Authority,电子认证)服务,采用ECDSA(Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名)算法生成公私钥对。当服务器接收到用户申请区块链账户的请求时,通过ECDSA算法生成公私钥对并发送给用户端,以使用户端保存该公私钥对,并利用私钥计算数据ID和进行数字签名以及利用公钥作为账户的身份标识。
在本实施例中,服务器可包括区块链网络,该区块链网络用于存放原始数据的原始完整性信息。区块链以时间顺序构造了以区块为基本单元的链式结构,每个区块由区块头和区块体两部分组成,其中,区块体中存放由大量数据构成的Merkle树(默尔克树);区块头中主要存放协议版本、前块Hash、Merkle根、时间戳、随机数等。在区块链中,所有区块以Hash指针的形式串联形成一种特殊的链表。区块链基于Merkle树和区块链表这两种数据结构保障了数据的不可篡改性。通过Merkle树,树内所有数据的篡改都可被检测到,根据Merkle树的节点到Merkle根路径上的直接分支,可以判断本区块中是否存在指定数据;通过区块链表,所有区块环环相扣,依靠前块Hash指针,任一区块的改变都会引发其后所有区块Hash指针的连锁改变,当从区块链网络中获取区块链表时,基于块Hash可以验证链上各块是否被修改过,其中,前块Hash中存放了前一区块的块Hash。通过区块链技术构造出的特殊的链式数据结构,具有去中心化、防篡改、防删除等安全特性。
在本实施例中,将云存储中用以记录原始数据完整性的原始完整性信息存储在区块链网络中,并且使用联盟链作为区块链技术的实施方案,联盟链中的用户只有经过授权才能使用区块链服务。此外,为了保存云存储用户的数字资产信息以便于管理,可将属于一个用户的数据完整性信息单独存放在一个区块中,相应地,在区块结构体中增加消息字段,用于保存云存储用户的相关信息。
在具体实现中,该消息字段与用户端获取到的公钥存在对应关系,在用户端获取到服务器发送的公私钥对后,用户端以公钥作为账户的身份标识,以私钥进行数字签名。可以理解,服务器通过用户端的公钥验证用户端的数字签名,同时可以通过公钥查询区块链网络中对应的消息字段,从而获取到该消息字段所在区块的数字资产信息,可以理解,该数字资产信息为持有该公钥用户端的部分或全部数字资产。
应当理解的是,区块链网络中存储的原始完整性信息由原始数据基于预设数据处理规则生成,可用于表征原始数据的完整性,相应地,用户从云存储平台获取到云存储数据并同样基于预设数据处理规则生成对应的实时完整性信息,云存储数据以编码块的形式存储在云存储平台,由于云存储平台中的数据容易被篡改,因此实时完整性信息可用于表征用户每次获取到的云存储数据的完整性。
其中,预设数据处理规则包括计算待处理数据的数据长度、数据Hash及数据ID。
在具体实现中,计算数据ID的实现方式有多种,下面给出几种实现方式,但是不限于如下举例:
在一种实现方式中,可通过私钥计算通用唯一识别码UUID,然后将该UUID和数据名称组合起来得到第一计算结果,并将该第一计算结果作为数据ID。具体地,用户端将私钥编码为字节数组并通过该字节数组计算出UUID,该UUID中存在连接符“-”,删除UUID中的连接符“-”可以得到一个字符串,将该字符串和数据名称连接就可以得到第一计算结果,最后将该第一计算结果作为数据ID。这种方式计算得到的数据ID能够保证数据ID的唯一性。
在另一种实现方式中,用户端可以将私钥编码为字节数组并且转换为第一字符串,然后将第一字符串与数据名称连接以组合成第二字符串,通过第二字符串计算出UUID,该UUID中存在连接符“-”,删除UUID中的连接符“-”就可以得到第一计算机结果,最后将该第一计算结果作为数据ID。这种方式计算得到的数据ID长度更短,而且也能保证唯一性。
可以理解,标准的UUID格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (长度分别为8-4-4-4-12)”,因此删除连接符后可以得到一个32位的字符串。
对于计算数据长度,可以字节为单位计算数据的长度,得到第二计算结果,并将该第二计算结果确定为数据长度;对于计算数据Hash,可通过Hash函数SHA-256(Secure HashAlgorithm 256)计算数据得到第三计算结果,并将该第三计算结果确定为数据Hash;将计算得到的数据ID、数据长度及数据Hash打包,即可获得数据的完整性信息。
可以理解的是,服务器通过网络接收用户端发送的实时完整性信息,利用该实时完整性信息,服务器可通过区块链网络为用户端提供云存储数据完整性验证的服务。
在具体实现中,服务器与用户端之间的网络交互运行模式可为C/S模式,服务器可采用RPC(Remote Procedure Call,远程过程调用)通信协议与用户端进行通信,RPC调用是面向服务的封装,服务器通过RPC在通信上封装服务,以使用户端可以通过RPC调用来获取服务器所提供服务的细节,并与服务器之间传输数据。例如,服务器通过RPC将区块链以服务的形式封装起来,以使用户端可以通过RPC调用区块链服务的接口以及使用区块链进行数据完整性验证。
此外,服务器可以运行在云存储平台外,也可以运行在云存储平台的集群内。当服务器运行在云存储平台外时,参照图7,用户端的用户为集群外的普通用户,用户使用云存储平台提供的至少一个存储节点存放数据的编码块,同时使用本实施例的服务器存放数据的原始完整性信息,并在使用数据前从区块链网络中获取原始数据长度以及验证数据完整性;当服务器运行在云存储平台的集群内时,参照图8,云存储平台包括多个存储节点,用户端的用户既是集群的一个用户又是构成集群的一个存储节点,为了保证必要的计算处理能力,本实施例的服务器可以部署在计算能力更强的控制节点,此时,集群内的存储节点将数据的原始完整性信息存储到服务器中的区块链网络,以使数据完整性信息不被篡改和删除。
进一步地,所述原始完整性信息包括所述原始数据的原始数据长度;
步骤S100之前,所述方法还包括:
S020,接收所述用户端发送的第二请求;
可以理解的是,服务器通过网络与用户端进行交互,接收用户端发送的第二请求。
S040,基于所述第二请求,获取所述原始数据的原始数据长度;
在本实施例中,第二请求可以是用户端获取原始数据长度的请求。
在具体实现中,第二请求中可以包括原始数据ID,也即用户端以原始数据ID作为数据的交互凭证,从而向服务器获取原始数据ID对应的原始数据长度,当然也可以其他数据属性作为数据交互凭证,在此不做限定。
可以理解的是,服务器可包括区块链网络,该区块链网络用于存放原始数据的原始完整性信息,该原始完整性信息包括原始数据的原始数据长度和原始数据ID,原始数据ID与原始数据长度存在对应关系。
服务器接收到第二请求后,可从区块链网络中直接获取原始数据长度。具体地,服务器中可提供直接获取原始数据长度的接口,通过该接口可以根据第二请求中的原始数据ID返回对应的原始数据长度。
S060,发送所述原始数据长度至所述用户端,以使所述用户端基于所述原始数据长度,对编码块进行解码,以获取所述云存储数据;其中,所述云存储数据由编码块解码生成,所述编码块由所述原始数据编码生成。
可以理解的是,服务器通过网络与用户端进行交互,发送原始数据长度至用户端。
需要说明的是,由原始数据编码生成的编码块最末块可能填充有无关数据,因此用户端对编码块进行解码需要获取原始数据的原始长度信息,以指定数据长度进行解码,从而获取到正确的云存储数据。
可以理解的是,云存储数据由编码块解码生成,编码块由原始数据编码生成并存储在云存储平台,当用户端从云存储平台获取云存储数据时,可向云存储平台发送第一请求,以获取云存储数据对应的编码块。其中,第一请求可以是向云存储平台获取云存储数据对应的编码块的请求。
在具体实现中,第一请求中可以包括原始数据名称,也即用户端以原始数据名称作为数据的交互凭证,从而向云存储平台获取原始数据名称对应的编码块,该原始数据名称对应的编码块解码后可获得云存储数据,也即编码块与云存储数据存在对应关系。当然,也可以其他数据属性作为数据交互凭证,在此不做限定。
通常,用户端可采用纠删码算法对原始数据编码以生成编码块,以及对编码块进行解码以生成云存储数据。在本实施例中,可选择柯西RS(Reed-Solomon)编码作为纠删码技术方案,使用JErasure库中实现的编解码函数作为调用的方法来对用户的数据进行编解码,JErasure库提供一般的RS编码方式,是基于C语言的纠删码的类库。其中,柯西RS编码使用柯西矩阵代替范德蒙RS编码中的范德蒙行列式,能够更简单地生成矩阵,提高计算效率。
应当理解的是,编码块包括数据块和冗余块,柯西RS编码方案中,可以选择原始数据分割成数据块的份数以及计算生成冗余块的份数。通过柯西RS编码,只需要数据块份数的编码块就可以解码生成云存储数据,同时可以容忍不超过冗余块份数的编码块出错。
具体地,柯西RS编码按照预设的数据块份数和冗余块份数,将数据平均分割成数据块,若不能平均分割的,在数据末尾填充数据,以使数据能够平均分割,然后将平均分割得到的数据块表示为列向量,并构造柯西矩阵与该列向量相乘以生成新的列向量,该新列向量以数据的形式体现就是数据块和冗余块。其中,填充数据可以是数字0。
在本实施例中,用户端可以选择使用RS(5,2)纠删编码,通过该编码,可以将原始数据平均分割为5份数据块,并计算生成2份数据冗余块。理论上通过该编码的运算,生成的编码块需要使用原始数据的140%的空间开销,并且任意不大于2份编码块的损坏都不会使原始数据彻底失去可用性。这种纠删编码备份方式比起现有技术中常用的多副本备份方式,具有更小的空间开销和更高的容错能力。
当用户端从云存储平台获取云存储数据对应的编码块并通过纠删码技术对编码块进行解码时,应当理解,用户端获取到的编码块为全部的数据块。在本实施例中,用户端基于原始数据长度,对全部数据块进行解码,以获取云存储数据。
S300,查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由所述原始数据基于所述预设数据处理规则生成;
在具体实现中,原始完整性信息可由用户在用户端基于预设数据处理规则计算生成,具体地,用户端将原始数据编码为编码块并存储至云存储平台,同时生成原始数据的原始完整性信息并存储至服务器中的区块链网络以保证数据的完整性信息不被篡改和删除。
由于,编码块在云存储平台存在被篡改的风险,通过验证实时完整性信息是否与原始完整性信息一致,可以验证云存储数据是否被篡改。在本实施例中,服务器将原始数据的原始完整性信息存储到区块链网络中,当用户使用服务器的数据完整性验证服务时,需要通过私钥对实时完整性信息进行数字签名,服务器接收到用户端发送的实时完整性信息和数字签名后,通过用户端的公钥验证用户端的数字签名,若验证不通过,则返回错误信息至用户端;若验证通过,则在区块链网络中查找是否存在与实时完整性信息一致的原始完整性信息,从而进行数据完整性验证。
进一步地,所述实时完整性信息包括实时数据ID、实时数据长度及实时数据Hash;所述原始完整性信息包括原始数据ID、原始数据长度及原始数据Hash;
步骤S300的具体实施过程包括:
S302,查找所述区块链网络中是否存在与所述实时数据ID一致的原始数据ID和与所述实时数据长度一致的原始数据长度和与所述实时数据Hash一致的原始数据Hash;
在具体实现中,服务器遍历整个区块链网络,以查找每一个区块的区块体中是否存在与实时完整性信息一致的原始完整性信息,进一步地,遍历区块体中的Merkle树,以查找树内是否存在与实时完整性信息一致的原始完整性信息。
由于,完整性信息包括数据ID、数据长度及数据Hash,可以理解,当实时完整性信息中的实时数据ID、实时数据长度及实时数据Hash与原始完整性信息中的原始数据ID、原始数据长度及原始数据Hash一一对应时,可以得出实时完整性信息与原始完整性信息一致的结果,也即云存储数据完整性正确;若在实时完整性信息与原始完整性信息的验证中,数据ID、数据长度及数据Hash这三种数据属性至少有一种属性不一致,则说明实时完整性信息与原始完整性信息不一致,也即云存储数据完整性不正确。
S304,若存在,则获得所述云存储数据完整性正确的结果。
可以理解的是,当区块链网络中存在与实时完整性信息一致的原始完整性信息时,说明云存储数据完整性正确,其数据内容未被篡改;当区块链网络中不存在与实时完整性信息一致的原始完整性信息时,说明云存储数据完整性不正确,其数据内容已被篡改,此时云存储数据不可用,需要在用户端进行数据恢复。
需要说明的是,服务器将结果返回给用户端,若结果表明云存储数据完整性正确时,用户端可直接使用该云存储数据;若结果表明云存储数据完整性不正确时,用户端需要进行数据恢复。由于,云存储数据由编码块解码获得,当进行数据恢复时,需要重新获取云存储数据对应的编码块。
应当理解的是,在数据完整性验证之前,用户端从云存储平台获取到的编码块为全部的数据块,当进行数据恢复时,需要向云存储平台获取全部的冗余块。
在数据恢复的具体实现中,用户端向云存储平台发送第三请求,以获取云存储数据对应的全部冗余块,同时向服务器发送第二请求以获取原始数据的原始数据长度。基于原始数据长度,通过纠删码技术,将全部冗余块和数据块进行解码,以获取新的云存储数据。在获取到新的云存储数据后,再按照前述步骤的方法重新验证数据的完整性,若验证结果表明新的云存储数据完整性正确时,则数据恢复成功;若验证结果表明新的云存储数据完整性仍然不正确时,则数据无法恢复。可以理解,当数据无法恢复时,用户端向用户输出错误信息,以使用户得知该数据已被损坏。
通过以上实施例,接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由所述原始数据基于所述预设数据处理规则生成。通过将原始数据的完整性信息存储到区块链网络中,并在区块链网络中进行数据完整性验证,从而保证原始数据完整性信息不被篡改和删除,提高数据完整性验证的可靠性。
参照图3,本图3为本发明基于区块链的数据完整性验证方法第二实施例的流程示意图,方法用于用户端,所述方法包括以下步骤:
S500,获取云存储数据;
需要说明的是,本实施例的执行主体为用户端,用户端可以是具有通信功能的终端设备,例如:手机、电脑、平板等。用户端通过网络与云存储平台、服务器进行交互,可以理解,用户端通过网络获取云存储数据,其中云存储数据以编码块的形式存储在云存储平台,也即用户端从云存储平台获取到云存储数据的编码块,再对编码块进行处理后得到云存储数据。
在用户端与服务器进行交互之前,用户端需要向服务器申请区块链服务的账户。具体地,用户端通过服务器申请区块链账户并保存账户的公私钥。其中,账户的公私钥由服务器发送给申请区块链账户的用户端。需要说明的是,服务器可提供CA(CertificateAuthority,电子认证)服务,采用ECDSA(Elliptic Curve Digital Signature Algorithm,椭圆曲线数字签名)算法生成公私钥对。当服务器接收到用户申请区块链账户的请求时,通过ECDSA算法生成公私钥对并发送给用户端,以使用户端保存该公私钥对,并利用私钥计算数据ID和进行数字签名以及利用公钥作为账户的身份标识。
在云存储平台的集群中,用户端可以是集群外部的设备,也可以是构成集群的一个存储节点。当用户端为集群外部的设备时,参照图7,服务器运行在云存储平台外,用户端的用户为集群外的普通用户,用户使用云存储平台提供的至少一个存储节点存放数据的编码块,同时使用服务器中的区块链网络存放数据的原始完整性信息,并在使用数据前从区块链网络中获取原始数据长度以及验证数据完整性;云存储平台包括多个存储节点,当用户端为构成云存储平台的一个存储节点时,参照图8,服务器运行在云存储平台的集群内,为了保证必要的计算能力,服务器可被部署在计算能力更强的控制节点,此时,集群内的存储节点将数据的原始完整性信息存储到服务器中的区块链网络,以使数据的完整性信息不被篡改和删除。
应当理解的是,服务器可包括区块链网络,该区块链网络用于存放原始数据的原始完整性信息。区块链以时间顺序构造了以区块为基本单元的链式结构,每个区块由区块头和区块体两部分组成,其中,区块体中存放由大量数据构成的Merkle树(默尔克树);区块头中主要存放协议版本、前块Hash、Merkle根、时间戳、随机数等。在区块链中,所有区块以Hash指针的形式串联形成一种特殊的链表。区块链基于Merkle树和区块链表这两种数据结构保障了数据的不可篡改性。通过Merkle树,树内所有数据的篡改都可被检测到,根据Merkle树的节点到Merkle根路径上的直接分支,可以判断本区块中是否存在指定数据;通过区块链表,所有区块环环相扣,依靠前块Hash指针,任一区块的改变都会引发其后所有区块Hash指针的连锁改变,当从区块链网络中获取区块链表时,基于块Hash可以验证链上各块是否被修改过,其中,前块Hash中存放了前一区块的块Hash。通过区块链技术构造出的特殊的链式数据结构,具有去中心化、防篡改、防删除等安全特性。
服务器使用联盟链作为区块链技术的实施方案,联盟链中的用户只有经过授权才能对数据进行验证等操作。此外,为了保存云存储用户的数字资产信息以便于管理,可将属于一个用户的数据完整性信息单独存放在一个区块中,相应地,在区块结构体中增加消息字段,用于保存云存储用户的相关信息。
在具体实现中,该消息字段与用户端获取到的公钥存在对应关系,在用户端获取到服务器发送的公私钥对后,用户端以公钥作为账户的身份标识,以私钥进行数字签名。可以理解,服务器通过用户端的公钥验证用户端的数字签名,同时可以通过公钥查询区块链网络中对应的消息字段,从而获取到该消息字段所在区块的数字资产信息,可以理解,该数字资产信息为持有该公钥用户端的部分或全部数字资产。
需要说明的是,用户端与服务器之间的网络交互运行模式可为C/S模式,服务器可采用RPC(Remote Procedure Call,远程过程调用)通信协议与用户端进行通信,RPC调用是面向服务的封装,服务器通过RPC在通信上封装服务,以使用户端可以通过RPC调用来获取服务器所提供服务的细节,并与服务器之间传输数据。例如,服务器通过RPC将区块链以服务的形式封装起来,以使用户端可以通过RPC调用区块链服务的接口以及使用区块链服务。
进一步地,所述云存储数据由编码块解码生成,所述编码块存储在云存储平台;
步骤S500的具体实施过程包括:
S502,发送第一请求至所述云存储平台,以获取所述云存储数据对应的编码块,以及发送第二请求至所述服务器,以使所述服务器基于所述第二请求,获取所述原始数据的原始数据长度;其中,所述编码块由所述原始数据编码生成;
可以理解的是,云存储数据由编码块解码生成,编码块由原始数据编码生成并存储在云存储平台,当用户端从云存储平台获取云存储数据时,可向云存储平台发送第一请求,以获取云存储数据对应的编码块。其中,第一请求可以是向云存储平台获取云存储数据对应的编码块的请求。
在具体实现中,第一请求中可以包括原始数据名称,也即用户端以原始数据名称作为数据的交互凭证,从而向云存储平台获取原始数据名称对应的编码块,该原始数据名称对应的编码块解码后可获得云存储数据,也即编码块与云存储数据存在对应关系。当然,也可以其他数据属性作为数据交互凭证,在此不做限定。
需要说明的是,由原始数据编码生成的编码块最末块可能填充有无关数据,因此用户端对编码块进行解码需要获取原始数据的原始长度信息,以指定数据长度进行解码,从而获取到正确的云存储数据。
在本实施例中,第二请求可以是用户端获取原始数据长度的请求。
在具体实现中,第二请求中可以包括原始数据ID,也即用户端以原始数据ID作为数据的交互凭证,从而向服务器获取原始数据ID对应的原始数据长度,当然也可以其他数据属性作为数据交互凭证,在此不做限定。
可以理解的是,服务器可包括区块链网络,该区块链网络用于存放原始数据的原始完整性信息,该原始完整性信息包括原始数据的原始数据长度和原始数据ID,原始数据ID与原始数据长度存在对应关系。
服务器接收到第二请求后,可从区块链网络中直接获取原始数据长度。具体地,服务器中可提供直接获取原始数据长度的接口,通过该接口可以根据第二请求中的原始数据ID返回对应的原始数据长度。
S504,接收所述服务器发送的所述原始数据长度;
可以理解的是,用户端通过网络与服务器进行交互,接收服务器发送的原始数据长度。
S506,基于所述原始数据长度,对所述编码块进行解码,以获取云存储数据。
通常,用户端可采用纠删码算法对原始数据编码以生成编码块,以及对编码块进行解码以生成云存储数据。在本实施例中,可选择柯西RS(Reed-Solomon)编码作为纠删码技术方案,使用JErasure库中实现的编解码函数作为调用的方法来对用户的数据进行编解码,JErasure库提供一般的RS编码方式,是基于C语言的纠删码的类库。其中,柯西RS编码使用柯西矩阵代替范德蒙RS编码中的范德蒙行列式,能够更简单地生成矩阵,提高计算效率。
应当理解的是,编码块包括数据块和冗余块,柯西RS编码方案中,可以选择原始数据分割成数据块的份数以及计算生成冗余块的份数。通过柯西RS编码,只需要数据块份数的编码块就可以解码生成云存储数据,同时可以容忍不超过冗余块份数的编码块出错。
具体地,柯西RS编码按照预设的数据块份数和冗余块份数,将数据平均分割成数据块,若不能平均分割的,在数据末尾填充数据,以使数据能够平均分割,然后将平均分割得到的数据块表示为列向量,并构造柯西矩阵与该列向量相乘以生成新的列向量,该新列向量以数据的形式体现就是数据块和冗余块。其中,填充数据可以是数字0。
在本实施例中,用户端可以选择使用RS(5,2)纠删编码,通过该编码,可以将原始数据平均分割为5份数据块,并计算生成2份数据冗余块。理论上通过该编码的运算,生成的编码块需要使用原始数据的140%的空间开销,并且任意不大于2份编码块的损坏都不会使原始数据彻底失去可用性。这种纠删编码备份方式比起现有技术中常用的多副本备份方式,具有更小的空间开销和更高的容错能力。
当用户端从云存储平台获取云存储数据对应的编码块并通过纠删码技术对编码块进行解码时,应当理解,用户端获取到的编码块为全部的数据块。在本实施例中,用户端基于原始数据长度,对全部数据块进行解码,以获取云存储数据。
S700,基于预设数据处理规则对所述云存储数据进行处理,以获取实时完整性信息;
可以理解的是,实时完整性信息由云存储数据基于预设数据处理规则生成,可用于表征云存储数据的完整性。其中,预设数据处理规则包括计算待处理数据的数据长度、数据Hash及数据ID。当待处理数据为云存储数据时,计算云存储数据的实时数据ID、实时数据长度及实时数据Hash。
进一步地,S700的具体实施过程包括:
S702,计算所述云存储数据的通用唯一识别码UUID得到第一计算结果,并将所述第一计算结果确定为实时数据ID;
在具体实现中,计算数据ID的实现方式有多种,下面给出几种实现方式,但是不限于如下举例:
在一种实现方式中,可通过私钥计算通用唯一识别码UUID,然后将该UUID和云存储数据名称组合起来得到第一计算结果,并将该第一计算结果作为实时数据ID。具体地,用户端将私钥编码为字节数组并通过该字节数组计算出UUID,该UUID中存在连接符“-”,删除UUID中的连接符“-”可以得到一个字符串,将该字符串和云存储数据名称连接就可以得到第一计算结果,最后将该第一计算结果作为实时数据ID。这种方式计算得到的实时数据ID能够保证实时数据ID的唯一性。
在另一种实现方式中,用户端可以将私钥编码为字节数组并且转换为第一字符串,然后将第一字符串与云存储数据名称连接以组合成第二字符串,通过第二字符串计算出UUID,该UUID中存在连接符“-”,删除UUID中的连接符“-”就可以得到第一计算结果,最后将该第一计算结果作为实时数据ID。这种方式计算得到的实时数据ID长度更短,而且也能保证唯一性。
可以理解,标准的UUID格式为“xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx (长度分别为8-4-4-4-12)”,因此删除连接符后可以得到一个32位的字符串。
S704,计算所述云存储数据的长度得到第二计算结果,并将所述第二计算结果确定为实时数据长度;
具体地,可以字节为单位计算云存储数据的长度得到第二计算结果,并将该第二计算结果确定为实时数据长度。
S706,通过Hash函数计算所述云存储数据得到第三计算结果,并将所述第三计算结果确定为实时数据Hash;
具体地,可通过Hash函数SHA-256(Secure Hash Algorithm 256)计算云存储数据得到第三计算结果,并将该第三计算结果确定为实时数据Hash。
S708,基于所述实时数据ID、实时数据长度及实时数据Hash,获取所述实时完整性信息。
将计算得到的实时数据ID、实时数据长度及实时数据Hash打包,即可获得云存储数据的实时完整性信息。
S900,将所述实时完整性信息发送至服务器,以使所述服务器查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由原始数据基于所述预设数据处理规则生成。
应当理解的是,原始完整性信息由原始数据基于预设数据处理规则生成,可用于表征原始数据的完整性,相应地,用户从云存储平台获取到云存储数据并同样基于预设数据处理规则生成对应的实时完整性信息,云存储数据以编码块的形式存储在云存储平台,由于云存储平台中的数据容易被篡改,因此实时完整性信息可用于表征用户每次获取到的云存储数据的完整性。
在具体实现中,原始完整性信息可由用户在用户端基于预设数据处理规则计算生成,具体地,用户端将原始数据编码为编码块并存储至云存储平台,同时生成原始数据的原始完整性信息并存储至服务器中的区块链网络以保证数据的完整性信息不被篡改和删除。
由于,编码块在云存储平台中存在被篡改的风险,通过验证实时完整性信息是否与原始完整性信息一致,可以验证云存储数据是否被篡改。在本实施例中,服务器将原始数据的原始完整性信息存储到区块链网络中,当用户使用服务器的数据完整性验证服务时,需要通过私钥对实时完整性信息进行数字签名,用户端发送实时完整性信息、数字签名至服务器,以使服务器通过用户端的公钥验证用户端的数字签名,若验证不通过,则返回错误信息至用户端;若验证通过,则在区块链网络中查找是否存在与实时完整性信息一致的原始完整性信息,从而进行数据完整性验证。
在具体实现中,服务器遍历整个区块链网络,以查找每一个区块的区块体中是否存在与实时完整性信息一致的原始完整性信息,进一步地,遍历区块体中的Merkle树,以查找树内是否存在与实时完整性信息一致的原始完整性信息。
由于,完整性信息包括数据ID、数据长度及数据Hash,可以理解,当实时完整性信息中的实时数据ID、实时数据长度及实时数据Hash与原始完整性信息中的原始数据ID、原始数据长度及原始数据Hash一一对应时,可以得出实时完整性信息与原始完整性信息一致的结果,也即云存储数据完整性正确,其数据内容未被篡改;若在实时完整性信息与原始完整性信息的验证中,数据ID、数据长度及数据Hash这三种数据属性至少有一种属性不一致,则说明实时完整性信息与原始完整性信息不一致,也即云存储数据完整性不正确,其数据内容已被篡改,此时云存储数据不可用,需要在用户端进行数据恢复。
需要说明的是,用户端接收到服务器返回的验证结果,若结果表明云存储数据完整性正确时,用户端可直接使用该云存储数据;若结果表明云存储数据完整性不正确时,用户端需要进行数据恢复。由于,云存储数据由编码块解码获得,当进行数据恢复时,需要重新获取云存储数据对应的编码块。
应当理解的是,在数据完整性验证之前,用户端从云存储平台获取到的编码块为全部的数据块,当进行数据恢复时,需要向云存储平台获取全部的冗余块。
在数据恢复的具体实现中,用户端向云存储平台发送第三请求,以获取云存储数据对应的全部冗余块,同时向服务器发送第二请求以获取原始数据的原始数据长度。基于原始数据长度,通过纠删码技术,将全部冗余块和数据块进行解码,以获取新的云存储数据。在获取到新的云存储数据后,再按照前述步骤的方法重新验证数据的完整性,若验证结果表明新的云存储数据完整性正确时,则数据恢复成功;若验证结果表明新的云存储数据完整性仍然不正确时,则数据无法恢复。可以理解,当数据无法恢复时,用户端向用户输出错误信息,以使用户得知该数据已被损坏。
通过以上实施例,获取云存储数据;基于预设数据处理规则对所述云存储数据进行处理,以获取实时完整性信息;将所述实时完整性信息发送至服务器,以使所述服务器查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由原始数据基于所述预设数据处理规则生成。通过将原始数据的完整性信息存储到区块链网络中,并在区块链网络中进行数据完整性验证,从而保证原始数据完整性信息不被篡改和删除,提高数据完整性验证的可靠性。
参照图4,图4为本发明基于区块链的数据完整性验证装置第一实施例的结构框图,装置用于服务器,所述装置包括:
接收模块120,用于接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;
查找模块140,用于查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由原始数据基于所述预设数据处理规则生成。
参照图5,图5为本发明基于区块链的数据完整性验证装置第二实施例的结构框图,装置用于用户端,所述装置包括:
第一获取模块520,用于获取云存储数据;
第二获取模块540,用于基于预设数据处理规则对所述云存储数据进行处理,以获取实时完整性信息;
发送模块560,用于将所述实时完整性信息发送至服务器,以使所述服务器查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由原始数据基于所述预设数据处理规则生成。
参照图6,图6为本发明基于区块链的数据完整性验证系统第一实施例的结构框图,所述基于区块链的数据完整性验证系统包括服务器100和用户端500,服务器100包含区块链网络,所述区块链网络中存储有原始数据的原始完整性信息。
服务器100,用于接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由所述原始数据基于所述预设数据处理规则生成;
用户端500,用于获取所述云存储数据;基于预设数据处理规则对所述云存储数据进行处理,以获取所述实时完整性信息;将所述实时完整性信息发送至所述服务器,以使所述服务器查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由所述原始数据基于所述预设数据处理规则生成。
服务器和用户端的具体执行步骤,参照上文描述,此处不再赘述。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有基于区块链的数据完整性验证程序,所述基于区块链的数据完整性验证程序被处理器执行时实现如上文方法实施例所述的基于区块链的数据完整性验证方法的步骤。因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。确定为示例,程序指令可被部署为在一个服务器和一个用户端上执行,或者在位于一个地点的多个服务器和多个用户端上执行,又或者,在分布在多个地点且通过通信网络互连的多个用户端和多个服务器上执行。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (7)
1.一种基于区块链的数据完整性验证方法,其特征在于,用于服务器,所述服务器包含区块链网络,所述区块链网络中存储有原始数据的原始完整性信息,所述原始完整性信息包括所述原始数据的原始数据长度;所述方法包括以下步骤:
接收用户端发送的第二请求;
基于所述第二请求,获取所述原始数据的原始数据长度;
发送所述原始数据长度至所述用户端,以使所述用户端基于所述原始数据长度,对编码块进行解码,以获取云存储数据;其中,所述云存储数据由编码块解码生成,所述编码块由所述原始数据编码生成;
接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;
查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由所述原始数据基于所述预设数据处理规则生成。
2.如权利要求1所述的基于区块链的数据完整性验证方法,其特征在于,所述原始完整性信息还包括所述原始数据的原始数据ID和原始数据Hash,所述实时完整性信息包括实时数据ID、实时数据长度及实时数据Hash;
所述查找所述区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果的步骤,包括:
查找所述区块链网络中是否存在与所述实时数据ID一致的原始数据ID和与所述实时数据长度一致的原始数据长度和与所述实时数据Hash一致的原始数据Hash;
若存在,则获得所述云存储数据完整性正确的结果。
3.一种基于区块链的数据完整性验证方法,其特征在于,用于用户端,所述方法包括以下步骤:
发送第一请求至云存储平台,以获取所述云存储数据对应的编码块,以及发送第二请求至服务器,以使所述服务器基于所述第二请求,获取原始数据的原始数据长度;其中,所述编码块由所述原始数据编码生成;
接收所述服务器发送的所述原始数据长度;
基于所述原始数据长度,对所述编码块进行解码,以获取云存储数据;
计算所述云存储数据的通用唯一识别码UUID得到第一计算结果,并将所述第一计算结果确定为实时数据ID;
计算所述云存储数据的长度得到第二计算结果,并将所述第二计算结果确定为实时数据长度;
通过Hash函数计算所述云存储数据得到第三计算结果,并将所述第三计算结果确定为实时数据Hash;
基于所述实时数据ID、实时数据长度及实时数据Hash,获取实时完整性信息;
将所述实时完整性信息发送至服务器,以使所述服务器查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由原始数据基于预设数据处理规则生成。
4.一种基于区块链的数据完整性验证系统,其特征在于,所述系统包括:
服务器,用于接收用户端发送的第二请求;基于所述第二请求,获取原始数据的原始数据长度;发送所述原始数据长度至所述用户端,以使所述用户端基于所述原始数据长度,对编码块进行解码,以获取云存储数据;接收用户端发送的实时完整性信息,所述实时完整性信息由云存储数据基于预设数据处理规则生成;查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由所述原始数据基于所述预设数据处理规则生成,所述云存储数据由编码块解码生成,所述编码块由所述原始数据编码生成,所述服务器包含区块链网络,所述区块链网络中存储有原始数据的原始完整性信息,所述原始完整性信息包括所述原始数据的原始数据长度、原始数据ID和原始数据Hash;
用户端,用于发送第一请求至云存储平台,以获取所述云存储数据对应的编码块,以及发送第二请求至所述服务器,以使所述服务器基于所述第二请求,获取所述原始数据的原始数据长度;接收所述服务器发送的所述原始数据长度;基于所述原始数据长度,对所述编码块进行解码,以获取云存储数据;计算所述云存储数据的通用唯一识别码UUID得到第一计算结果,并将所述第一计算结果确定为实时数据ID;计算所述云存储数据的长度得到第二计算结果,并将所述第二计算结果确定为实时数据长度;通过Hash函数计算所述云存储数据得到第三计算结果,并将所述第三计算结果确定为实时数据Hash;基于所述实时数据ID、实时数据长度及实时数据Hash,获取所述实时完整性信息;将所述实时完整性信息发送至服务器,以使所述服务器查找区块链网络中是否存在与所述实时完整性信息一致的原始完整性信息,以获得查找结果;其中,所述原始完整性信息由原始数据基于所述预设数据处理规则生成,所述编码块由所述原始数据编码生成。
5.一种服务器,其特征在于,所述服务器包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的基于区块链的数据完整性验证程序,所述基于区块链的数据完整性验证程序在被所述处理器执行时实现如权利要求1-2中任一项所述方法的各个步骤。
6.一种基于区块链的数据完整性验证设备,其特征在于,用于用户端,所述设备包括存储器、处理器以及存储在所述存储器并可在所述处理器上运行的基于区块链的数据完整性验证程序,所述基于区块链的数据完整性验证程序在被所述处理器执行时实现如权利要求3所述方法的各个步骤。
7.一种计算机存储介质,其特征在于,所述计算机存储介质存储有基于区块链的数据完整性验证程序,所述基于区块链的数据完整性验证程序被处理器执行时实现如权利要求1-3中任一项所述方法的各个步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111111851.XA CN113553627B (zh) | 2021-09-23 | 2021-09-23 | 基于区块链的数据完整性验证方法、系统、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111111851.XA CN113553627B (zh) | 2021-09-23 | 2021-09-23 | 基于区块链的数据完整性验证方法、系统、设备及介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113553627A CN113553627A (zh) | 2021-10-26 |
CN113553627B true CN113553627B (zh) | 2022-01-04 |
Family
ID=78106535
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111111851.XA Active CN113553627B (zh) | 2021-09-23 | 2021-09-23 | 基于区块链的数据完整性验证方法、系统、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113553627B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113961905B (zh) * | 2021-12-20 | 2022-03-11 | 四川特号商盟科技有限公司 | 一种在线协议签署数据的存储方法 |
CN114567485A (zh) * | 2022-03-01 | 2022-05-31 | 北京全路通信信号研究设计院集团有限公司 | 一种数据处理方法、装置、设备和存储介质 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787390A (zh) * | 2016-03-02 | 2016-07-20 | 深圳大学 | 一种数据完整性的验证方法及其系统 |
CN108520464A (zh) * | 2018-04-18 | 2018-09-11 | 北京天德科技有限公司 | 一种基于传统区块链的实时自动化监管报告系统 |
CN109542883A (zh) * | 2018-10-30 | 2019-03-29 | 广州斯拜若科技有限公司 | 一种基于区块链的信息查重方法 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10490304B2 (en) * | 2012-01-26 | 2019-11-26 | Netspective Communications Llc | Device-driven non-intermediated blockchain system over a social integrity network |
CN110443074A (zh) * | 2019-08-01 | 2019-11-12 | 河南中盾云安信息科技有限公司 | 一种区块链节点数据完整性检测的方法 |
CN110830259A (zh) * | 2019-08-06 | 2020-02-21 | 贵州大学 | 为多媒体数据提供原始性和完整性证明的方法及系统 |
SG11202001978YA (en) * | 2019-09-11 | 2020-04-29 | Alibaba Group Holding Ltd | Shared blockchain data storage based on error correction coding in trusted execution environments |
CN111901340B (zh) * | 2020-07-28 | 2021-06-22 | 四川大学 | 一种面向能源互联网的入侵检测系统及其方法 |
CN111953699A (zh) * | 2020-08-17 | 2020-11-17 | 汪金玲 | 一种基于区块链的数据加密方法及系统 |
CN112187475A (zh) * | 2020-09-28 | 2021-01-05 | 北京八分量信息科技有限公司 | 基于可信计算进行多中心记账的方法、装置及相关产品 |
-
2021
- 2021-09-23 CN CN202111111851.XA patent/CN113553627B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105787390A (zh) * | 2016-03-02 | 2016-07-20 | 深圳大学 | 一种数据完整性的验证方法及其系统 |
CN108520464A (zh) * | 2018-04-18 | 2018-09-11 | 北京天德科技有限公司 | 一种基于传统区块链的实时自动化监管报告系统 |
CN109542883A (zh) * | 2018-10-30 | 2019-03-29 | 广州斯拜若科技有限公司 | 一种基于区块链的信息查重方法 |
Also Published As
Publication number | Publication date |
---|---|
CN113553627A (zh) | 2021-10-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109491968B (zh) | 一种文件处理方法、装置、设备及计算机可读存储介质 | |
CN113553627B (zh) | 基于区块链的数据完整性验证方法、系统、设备及介质 | |
CN113568785B (zh) | 一种基于区块链的数据备份方法、装置、设备及存储介质 | |
CN108647230B (zh) | 分布式存储方法、电子装置及存储介质 | |
US10992481B2 (en) | Two-dimensional code generation method, apparatus, data processing method, apparatus, and server | |
CN110119643A (zh) | 二维码生成方法及装置、二维码识别方法及装置 | |
CN106161336A (zh) | 一种信息更新方法、装置及系统 | |
US20220271924A1 (en) | Method and apparatus for processing data request | |
CN110597839A (zh) | 交易数据处理方法、装置、设备以及存储介质 | |
CN115269038B (zh) | 无状态计算的数据处理方法、程序产品及电子设备 | |
CN111639080A (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN111478751B (zh) | 一种数据断点续传方法、装置及终端设备 | |
CN110941672A (zh) | 户籍管理方法、装置、设备以及存储介质 | |
CN108768650B (zh) | 一种基于生物特征的短信验证系统 | |
CN113568786B (zh) | 一种数据恢复方法、装置、设备及存储介质 | |
CN111400771A (zh) | 目标分区的校验方法及装置、存储介质、计算机设备 | |
US10949645B2 (en) | Method, apparatus, and storage medium for data verification | |
CN115567218A (zh) | 基于区块链的安全证书的数据处理方法、装置和服务器 | |
CN109407974B (zh) | 电子装置、基于混肴二进制码的图片删除方法及存储介质 | |
CN111818526B (zh) | 一种数据同步方法及装置 | |
KR102375144B1 (ko) | 블록체인을 이용하여 개인키를 관리하는 장치, 방법, 시스템 및 컴퓨터 판독가능 저장 매체 | |
CN111949738A (zh) | 基于区块链的数据存储去重方法、终端设备和存储介质 | |
CN111339571A (zh) | 一种区块链密钥管理方法、装置、设备和存储介质 | |
CN110585717A (zh) | 一种信息处理方法及装置 | |
CN116414841A (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 |