本发明涉及数据溯源技术领域,特别涉及基于区块链技术的检测数据溯源验证方法。
背景技术:
区块链是一种按照时间顺序将数据区块以顺序相连的方式组合成的一种链式数据结构,并以密码学方式保证的不可篡改和不可伪造的分布式账本,具有去中心化、开放性、自治性、信息不可篡改等特征。
为了保证检测数据的真实性和溯源性,传统的工程检测要求保留纸质原始记录数据,纸质数据不得涂改,只能划改并签名。检测数据只存储于单一节点,安全性和容灾能力不强,数据损毁后不容易恢复,数据的有效性也是通过人工判别的,耗时费力,不可靠。
技术实现要素:
针对现有技术存在的不足,本发明要解决的技术问题是提供一种基于区块链技术的检测数据溯源验证方法,能够解决数据容灾能力不强的问题,提供一种可观、可靠、便捷的检测数据验证方法。
为了实现上述目的,本发明是通过如下的技术方案来实现:一种基于区块链技术的检测数据溯源验证方法,包括以下步骤:
s1、对数据进行序列化,并将序列化后的检测数据存储于数据区块链中;
s2、检测人员对序列化后的检测数据进行操作,将操作日志和数据状态存储于日志区块链中,并生成检测报告;
s3、从检测报告中获得数据标签,在日志区块链中查询该数据标签,并根据数据标签与日志区块链记录的数据状态、数据位置确定数据的真实性和有效性;
s4、再通过数据标签中的数据链接,获取数据区块链中该数据的详细信息,计算哈希值,并根据哈希值判断数据是否被篡改。
进一步的,在s2检测人员进行操作的具体方法为:
s21、检测人员宣告开始检测,对日志区块进行开始检测记录,开始检测记录的内容为:项目id、用户id、项目运行状态,将开始检测记录的内容存储于日志区块链中;
s22、检测人员对检测数据进行操作,并对日志区块进行中间操作记录,中间操作记录的内容为:项目id、用户id、数据标签、操作行为和数据状态,将中间操作记录的内容存储于日志区块链中;
s23、检测人员宣告结束检测,对日志区块进行结束检测记录,结束检测记录的内容为:项目id、用户id和项目停止状态,将结束检测记录的内容存储于日志区块链接。
进一步的,在s22中,所述操作行为可分为:数据的增加、删除和修改;
数据的增加为:序列化后的检测数据存储于数据区块链,数据状态为“有效”;
数据的删除为:数据区块链中的数据不变,数据状态置为“无效”;
数据的修改为:将增加和删除的操作进行串行合并,先“删除”旧数据,再“增加”新数据。
进一步的,在s22中,所述操作行为还包括:数据的审核,未审核的时候,数据为“未审核”状态,审核通过后,变为“审核”状态;只有审核通过了的检测数据,才能进入最终的报告。
进一步的,在s3中,确定该数据的真实性和有效性的具体方法为:
s31、所述数据标签能够在日志区块链的有效范围内找到,并且该标签对应的数据状态与日志区块链里面记录的一致,就认为是真实的;
s32、如果所述数据标签在日志区块链里面的最终状态是有效的,那么就认为是有效的。
进一步的,在s4中,根据哈希值判断数据是否被篡改的具体方法为:
如果数据区块链对应的哈希值与数据标签中的哈希值不同,则认为数据被篡改了;如果相同,则认为没有被篡改。
进一步的,在s4中计算哈希值使用哈希算法。
本发明的有益效果:
本发明一种基于区块链技术的检测数据溯源验证方法,首先,对数据进行序列化,并将序列化后的检测数据存储于数据区块链中;然后,检测人员对序列化后的检测数据进行操作,并生成检测报告,提供数据标签;接下来,根据数据标签与日志区块链记录的数据状态、数据位置确定数据的真实性和有效性;最后,通过数据标签中的数据链接,获取数据区块链中该数据的详细信息,计算哈希值,并根据哈希值判断数据是否被篡改。通过区块链技术的去中心化特性,解决数据容灾能力不强的问题,通过数据验证,快速识别出数据是否被篡改,解决数据安全性的问题。
附图说明
为了更清楚地说明本发明具体实施方式或现有技术中的技术方案,下面将对具体实施方式或现有技术描述中所需要使用的附图作简单地介绍。在所有附图中,类似的元件或部分一般由类似的附图标记标识。附图中,各元件或部分并不一定按照实际的比例绘制。
图1为本发明于区块链技术的检测数据溯源验证方法的流程图。
具体实施方式
下面将结合附图对本发明技术方案的实施例进行详细的描述。以下实施例仅用于更加清楚地说明本发明的技术方案,因此只作为示例,而不能以此来限制本发明的保护范围。
需要注意的是,除非另有说明,本申请使用的技术术语或者科学术语应当为本发明所属领域技术人员所理解的通常意义。
如图1所述,本发明提供一种技术方案:一种基于区块链技术的检测数据溯源验证方法,包括以下步骤:
第一步,对数据进行序列化,并将序列化后的检测数据存储于数据区块链中;
第二步,检测人员对序列化后的检测数据进行操作,将操作日志和数据状态存储于日志区块链中,并生成检测报告;
首先,检测人员宣告开始检测,对日志区块进行开始检测记录,开始检测记录的内容为:项目id、用户id、项目运行状态,将开始检测记录的内容存储于日志区块链中;
然后,检测人员对检测数据进行操作,并对日志区块进行中间操作记录,中间操作记录的内容为:项目id、用户id、数据标签、操作行为和数据状态,将中间操作记录的内容存储于日志区块链中;
操作行为可分为:数据的增加、删除和修改;
数据的增加为:序列化后的检测数据存储于数据区块链,数据状态为“有效”;
数据的删除为:数据区块链中的数据不变,数据状态置为“无效”;
数据的修改为:将增加和删除的操作进行串行合并,先“删除”旧数据,再“增加”新数据。
操作行为还包括:数据的审核,未审核的时候,数据为“未审核”状态,审核通过后,变为“已审核”状态。只有审核通过了的检测数据,才能进入最终的报告。
最后,检测人员宣告结束检测,对日志区块进行结束检测记录,结束检测记录的内容为:项目id、用户id和项目停止状态,将结束检测的内容存储于日志区块链接。
第三步,从检测报告中获得数据标签,在日志区块链中查询该数据标签,并根据数据标签与日志区块链记录的数据状态、数据位置确定数据的真实性和有效性;
由于,区块链里面的区块是按照时间顺序排列的,如果数据标签能够在日志区块链的有效范围内:项目开始和结束期间找到,并且该标签对应的数据状态与日志区块链里面记录的一致,就认为是真实的;
如果所述数据标签在日志区块链里面的最终状态是有效的,那么就认为是有效的。
第四步,再通过数据标签中的数据链接,获取数据区块链中该数据的详细信息,计算哈希值,并根据哈希值判断数据是否被篡改,如果数据区块链对应的哈希值与数据标签中的哈希值不同,则认为数据被篡改了;如果相同,则认为没有被篡改。
哈希值是把数据通过逻辑运算得到的数值,同样的数据得到的哈希值是相同的,不同数据得到的哈希值是不同的。
使用md5哈希算法,将“123456”加密,得到的哈希值总是:“e10adc3949ba59abbe56e057f20f883e”
使用md5哈希算法,将“123457”加密后得到的哈希值总是:“f1887d3f9e6ee7a32fe5e76f4ab80d63”
所有哈希函数都有如下一个基本特性:如果两个哈希值根据统一函数,其值是不相同的,那么这两个哈希值的原始输入也是不相同的。这个特性是哈希函数具有确定性的结果,具有这种性质的哈希函数称为单向哈希函数。但另一方面,哈希函数的输入和输出不是唯一对应关系的,如果两个哈希值相同,两个输入值很可能是相同的,但也可能不同,这种情况称为“哈希碰撞(collision)”,这通常是两个不同长度的输入值,刻意计算出相同的输出值。输入一些数据计算出哈希值,然后部分改变输入值,一个具有强混淆特性的哈希函数会产生一个完全不同的哈希值。因此,如果数据区块链对应的哈希值与数据标签中的哈希值不同,则认为数据被篡改了;如果相同,则认为没有被篡改。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围,其均应涵盖在本发明的权利要求和说明书的范围当中。