基于Merkle树的电能质量数据交换格式文件完整性校验方法及系统与流程

文档序号:23419240发布日期:2020-12-25 11:41阅读:86来源:国知局
基于Merkle树的电能质量数据交换格式文件完整性校验方法及系统与流程
本发明涉及计算机文件完整性校验
技术领域
,具体是一种基于merkle树的电能质量数据交换格式文件完整性校验方法及系统。
背景技术
:ieee标准委员会发布ieeep1159.3号标准文件,在该文件里面,委员会提出了电能质量数据在交换过程中的交换格式,称为pqdif(powerqualitydatainterchangeformat),经过多次修改和商讨,最终形成了ieeep1159.3/draft9号标准。该标准文件给出的交换格式,对电脑质量数据的记录格式给予了统一的标准,这可以解决实际生活中不同厂家生产的不同设备收集的数据,由于采用不同定义的原因不能进行数据交换和共享的问题。pqdif已经成为发达国家承认的标准,在数据格式领域技术十分成熟。但是一般电气设备制造厂家制造的设备在生成pqdif文件的过程中,生成pqdif文件比较大,在电气设备监测端向用户端传输pqdif文件的过程中不稳定,pqdif文件容易损坏,而且传输的pqdif文件数目较多,不宜定位具体的损坏文件位置,由于文件内容较大,重新传输会浪费大量时间,而且不能保证稳定性。在网络数据传输过程中,需要同时从不同的地方下载数据,由于服务器等原因,下载的数据是不可靠的。为了更好地校验数据的完整性,需要把大的文件分割成小的数据块(例如,把分割成2k为单位的数据块)。这样的好处是,如果小块数据在传输过程中损坏,那么只要重新下载这一快数据即可,不用重新下载整个文件。数据监测端生成的较长时间内pqdif文件就是一个大文件,可以让其生成较短时间内的pqdif文件,这样就成功把大文件分割为小文件。但是较短时间内的pqdif文件数目较多,采用传统方法检验pqdif文件完整性,耗时比较长,还容易出错。技术实现要素:针对现有技术存在的上述不足,本发明提供一种基于merkle树的电能质量数据交换格式文件完整性校验方法及系统,可以提升校验效率高,而且准确性高,节省时间。一种基于merkle树的电能质量数据交换格式文件完整性校验方法,包括如下步骤:步骤一、用户端向小文件传输节点发送小文件下载请求,小文件传输节点向用户端传输小文件以及对小文件进行完整性校验所需要的所有路径哈希值pi,其中每个小文件作为数据分块构建一个二叉树结构,二叉树的大小由数据分块的数目决定,二叉树最底层的每一个叶子结点都对应一个数据分块的哈希值,不同数据分块的哈希值由数据分块的内容决定,上一级结点通过下一级两个结点级联得到,最底层的结点哈希值可得到最高层的哈希值也就是根结点h0;步骤二、用户端利用哈希算法得到所下载小文件的哈希值hi;步骤三、用户端利用哈希值hi和路径哈希值pi得到待校验值ci,判断该值是否等于根结点h0,若相等,则校验成功,执行步骤四,若相不等,则校验失败,执行步骤五;步骤四、用户端将哈希值hi和路径哈希值pi进行保存,用于后续小文件完整性校验,并继续进行下一个小文件的下载;步骤五、判定得到的小文件是损坏的,用户端需要重新进行该小文件的下载申请。进一步的,叶子结点的数目大于或等于数据分块数目,多余的叶子结点哈希值为0,不对应数据分块。进一步的,假设pqdif小文件数目为n,merkle树的叶子节点数为m,n≤(2)m,n和m均为自然数。进一步的,所述哈希算法使用sha1。一种基于merkle树的电能质量数据交换格式文件完整性校验系统,包括用户端及服务器;所述用户端,用于向服务器发送下载请求;所述服务器,用于根据所述用户端的下载请求,向用户端传输小文件以及对小文件进行完整性校验所需要的所有路径哈希值pi,其中每个小文件作为数据分块构建一个二叉树结构,二叉树的大小由数据分块的数目决定,二叉树最底层的每一个叶子结点都对应一个数据分块的哈希值,不同数据分块的哈希值由数据分块的内容决定,上一级结点通过下一级两个结点级联得到,最底层的结点哈希值可得到最高层的哈希值也就是根结点h0;所述用户端,还用于利用哈希算法得到所下载小文件的哈希值hi,利用哈希值hi和路径哈希值pi得到待校验值ci,根据待校验值ci是否等于根结点h0判断小文件是否下载成功。进一步的,所述用户端若判定待校验值ci等于根结点h0,则校验成功,所述用户端将哈希值hi和路径哈希值pi进行保存,用于后续小文件完整性校验,并继续进行下一个小文件的下载;若不相等,则校验失败,所述用户端判定得到的小文件是损坏的,用户端需要重新进行该小文件的下载申请。进一步的,叶子结点的数目大于或等于数据分块数目,多余的叶子结点哈希值为0,不对应数据分块。进一步的,假设pqdif小文件数目为n,merkle树的叶子节点数为m,n≤(2)m,n和m均为自然数。进一步的,所述哈希算法使用sha1。本发明在实际校验过程中,服务器不需要发送全部的路径哈希值给用户,另外,校验过程中引入的哈希算法sha1,在计算哈希值的过程是分散在不同的申请时刻,带来的时间损耗很小,相对于传统方法检测小文件完整性,本发明校验完整性的速度大大提高,不仅可以节省大量的校验时间,提高校验的准确性,也减少了人力损耗。附图说明图1是本发明merkle树的结构图;图2是本发明基于merkle树的小文件完整性校验交互示意图;图3是本发明基于merkle树的电能质量数据交换格式文件完整性校验方法其中一个实施例的流程示意图。具体实施方式为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。pqdif文件是由物理层和逻辑层构成的,物理层描述文件物理结构,与实际电脑质量数据无关;逻辑层主要描述电脑质量数据。在ieee1159.3所规定的pqdif文件中,每个记录含有的记录头(header)中存有一个用于校验文件完整性的校验和(checksum),它采用32bit的循环冗余码(crc-cyclicalredundancy)来完成校验,以保证物理结构在传输中保持完整性和正确性。pqdif文件的解析,首先要通过计算得到一个校验和,然后再与数据终端传输的校验和进行对比,若两者的校验和一致,说明数据文件的物理结构完整。基于这个思想,本发明提出了一种基于merkle树的电能质量数据交换格式文件完整性校验方法,与传统方法相比,本发明的方法效率高,准确性高,节省时间。merkle树是指merkle将二叉树与哈希算法结合得到的一种新的树结构,它是一种特殊情况下的二叉树。叶子结点对应的是集合中的元素也就是哈希值,上一级结点可以通过下一级两个结点级联得到。这样,由最底层的结点哈希值可以得到最高层的哈希值也就是根结点。在merkle树中,通过每一个叶子结点都可以得到最后的根结点,它是一种非常高效的索引结构,经常用于数据校验。merkle树是以数据分块为基础,构建一个二叉树结构。二叉树的大小由数据分块的数目决定。二叉树最底层的每一个叶子结点都对应一个数据分块的哈希值。不同数据分块的哈希值是由数据分块的内容决定的,当数据分块的内容改变时,哈希值也会发生相应的改变,所以数据分块的哈希值具有唯一性。叶子结点的数目大于或等于数据分块数目,多余的叶子结点哈希值为0,不对应数据分块,协助校验数据分块完整,不进行数据传输。下面介绍通过merkle树实现完整性校验过程:1、构造校验pqdif小文件的merkle树由merkle树定义,构造相应的merkle树来校验pqdif小文件完整性,其中哈希算法使用sha1。假设pqdif小文件数目为n,merkle树的叶子节点数为m,(n≤(2)m),n和m均为自然数。假设需要校验的pqdif小文件共有7个,用q1-q7表示。令叶子结点h7-h13从左至右(如图1所示),依次对应小文件q1-q7的哈希值,多余的叶子结点h14哈希值为0。每个pqdif小文件的哈希值是唯一的。对于父结点的哈希值,可以通过两个子结点哈希值进行级联得到,层层级联直到得到根结点h0对应的哈希值。这样的一个计算得到根结点h0的过程构成了merkle树。其中,h1-h6称为路径哈希值。通过哈希算法,可以得到需要的根结点h0对应的哈希值,也就是计算校验和。2、基于merkle树校验pqdif小文件原理如图2所示,当用户向服务器提出下载申请的时候,服务器不仅需要返回相应的小文件,还需要向用户返回用于验证小文件完整的路径哈希值。例如小文件q1的实际哈希值为h7,则小文件q1的路径哈希值也唯一确定,为h8、h4、h2。则通过哈希值算法sha1,将小文件的哈希值与小文件对应的路径哈希值结合得到下式:sha1(sha1(sha1(h7+h8)+h4)+h2)=h0若上式校验成立,则说明该小文件完整性校验成功;若是不成立,则说明该小文件完整性校验失败,则需要重新向节点重新申请下载该小文件。3、性能分析对于本发明校验效率分析如下:在实际校验过程中,服务器发送给客户端的路径哈希值,是针对小文件相应的路径哈希值,从里面选择最优组合发送用户。假设用户向服务器提出下载申请,服务器发送小文件之前会对用户已经拥有的路径哈希值进行检测,只需要发给用户组合中缺少的哈希值。例如,用户已经下载了小文件q1和q2,那么用户必定拥有路径哈希值h2和h4,进一步级联计算得到h1和h3,那么在进行小文件q7的发送过程中,只需要发给用户h5和h14,用户就可以完成对q7的校验。随着小文件下载申请的不断增加,用户拥有的路径哈希值也就越多,在后续的小文件完整性校验时,需要发送的路径哈希值越少,小文件完整性校验也就越迅速。以图1的merkle树为例,用户对pqdif小文件q1-q7(q8不对应具体小文件,为0)进行校验时,需要发送的路径哈希值如表1所示:表1路径哈希值表目标小文件需要发送的路径哈希值q1h2、h4、h8q2—q3h10q4—q5h6、h12q6—q7h14q8—全部hashes7由表1的数据可知,实际校验过程中,服务器不需要发送全部的路径哈希值给用户,下载所有的小文件q1-q7所需要发送的路径哈希值的总数为7个。除此之外,校验过程中引入的哈希算法sha1,在计算哈希值的过程是分散在不同的申请时刻,带来的时间损耗很小。所以,相对于传统方法检测小文件完整性,本发明校验完整性的速度大大提高,消耗减少。4、下面通过一个实施例说明本发明pqdif小文件的校验的具体流程:当下载并校验pqdif小文件完整性的时候,用户需要先向服务器提出下载pqdif小文件申请,服务器会返回pqdif小文件和对应的路径哈希值。然后用户会解析读取pqdif小文件,得到相应的实际哈希值。然后再与路径哈希值进行层层级联,最后得到校验和h0,与服务器返回的校验和进行比对。若二者一致,则说明该pqdif小文件完整性良好。否则,需要重新进行pqdif小文件下载申请和验证,直到校验成功,再进行下一个pqdif小文件下载验证。校验pqdif小文件完整性的具体流程图如图3所示,其具体校验步骤如下:步骤一、用户端向小文件传输节点发送小文件下载请求,小文件传输节点向用户端传输小文件以及对小文件进行完整性校验所需要的所有路径哈希值pi,其中每个小文件作为数据分块构建一个二叉树结构,二叉树的大小由数据分块的数目决定,二叉树最底层的每一个叶子结点都对应一个数据分块的哈希值,不同数据分块的哈希值由数据分块的内容决定,上一级结点通过下一级两个结点级联得到,最底层的结点哈希值可得到最高层的哈希值也就是根结点h0;步骤二、用户端利用哈希算法得到所下载小文件的哈希值hi;步骤三、用户端利用哈希值hi和路径哈希值pi得到待校验值ci,判断该值是否等于根结点h0,若相等,则校验成功,执行步骤四,若不相等,则校验失败,执行步骤五;步骤四、用户端将哈希值hi和路径哈希值pi进行保存,用于后续小文件完整性校验,并继续进行下一个小文件的下载;步骤五、判定得到的小文件是损坏的,用户端需要重新进行该小文件的下载申请。本发明实施例还提供一种基于merkle树的电能质量数据交换格式文件完整性校验系统,包括用户端及服务器;所述用户端,用于向服务器发送下载请求;所述服务器,用于根据所述用户端的下载请求,向用户端传输小文件以及对小文件进行完整性校验所需要的所有路径哈希值pi,其中每个小文件作为数据分块构建一个二叉树结构,二叉树的大小由数据分块的数目决定,二叉树最底层的每一个叶子结点都对应一个数据分块的哈希值,不同数据分块的哈希值由数据分块的内容决定,上一级结点通过下一级两个结点级联得到,最底层的结点哈希值可得到最高层的哈希值也就是根结点h0;所述用户端,还用于利用哈希算法得到所下载小文件的哈希值hi,利用哈希值hi和路径哈希值pi得到待校验值ci,根据待校验值ci是否等于根结点h0判断小文件是否下载成功。具体的,若相等,则校验成功,所述用户端将哈希值hi和路径哈希值pi进行保存,用于后续小文件完整性校验,并继续进行下一个小文件的下载;若不相等,则校验失败,所述用户端判定得到的小文件是损坏的,用户端需要重新进行该小文件的下载申请。算例1:湖北电科院有一数据监测终端,用于收集电脑质量数据,并生成pqdif文件,每分钟收集的电脑质量数据生成一个pqdif文件。以某天生成的全部pqdif文件为样本总和,进行pqdif文件完整性校验。pqdif文件数目为1440个,损坏文件个数为30个,校验结果如下表:表2pqdif文件完整性校验结果算例2:湖北电科院有一数据监测终端,用于收集电脑质量数据,并生成pqdif文件,每分钟收集的电脑质量数据生成一个pqdif文件。以一天生成的全部pqdif文件和两天生成的全部pqdif文件为样本总和,进行pqdif文件完整性校验。一天生成的全部pqdif文件数目为1440个,损坏文件个数为30个;两天生成的全部pqdif文件数目为2880个,损坏文件个数为60个校验结果如下表:表3pqdif文件完整性校验结果由算例1仿真条件可知,一天之内该数据终端产生1440个pqdif文件,其中损坏文件的个数为30个,传统方法校验文件完整性时,检测出来损坏文件的个数为26个,准确率为86.67%,用时为35.40min。利用本文方法进行文件完整性,检测出来文件损坏个数为30个,准确率为100%,用时为3s。由表2实际结果对比可以得到,传统校验pqdif文件完整性,耗时较长,容易遗漏出错,准确率较低。由算例2和算例1仿真条件对比,二者的文件总数不同。算例2中,增加了校验的文件数目,由表3可知,当校验文件数目增加时,传统方法校验准确率下降,用时增加。而本文方法校验准确率达到100%,用时少。由算例1和算例2的结果分析可知,当校验文件数目较少时,使用传统方法的时候,校验的准确性还相对良好,可以达到85%以上,由算例2可知随着校验文件个数的增加,传统方法校验文件的准确率下降很多,由86.67%下降到56.67%。而且校验时间也增加很多;在算例1和算例2中,由仿真结果可以知道使用本文方法校验,校验速度很快,耗时短。校验所需时间不会随着校验文件数目的增加而大幅度增加。校验的准确率一直为100%。由此可知使用本发明进行小文件完整性的校验不仅可以节省大量的校验时间,提高校验的准确性,也减少人力损耗。以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何属于本
技术领域
的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1