基于区块链的文件管理方法和装置与流程

文档序号:17160504发布日期:2019-03-20 00:38阅读:1741来源:国知局
基于区块链的文件管理方法和装置与流程

本发明涉及计算机技术领域,特别是涉及一种基于区块链的文件管理方法和装置。



背景技术:

随着信息技术的飞速发展和深入应用,社会进步正在不断加速,传统的手工办公将被现代的办公自动化所代替。电子文件将以其无可争议的生命力成为人类社会记录信息、传达信息、留存信息的重要工具。由于电子文件的数字化信息属性,信息与载体的相分离等特性,如何保证电子文件的内容与形成时的原始状况一致,即电子文件的原始性,是业界一直关注的问题,该问题也一直是阻碍电子文件成为权威凭证的最大障碍。

电子文件由于生成方便、种类丰富以及传播快捷等特性,电子文件的应用场景越来越丰富,随之也带来了一些对电子文件的新的技术需求。例如,在某些场景中,对于电子文件的生成者来说,希望电子文件是保密的,即希望电子文件只能在指定的分布式文件系统保存,但对于电子文件的使用者来说,需要确保所获取的电子文件的内容与原始文件是一致的,即电子文件能保证原始性。如何同时满足电子文件的生成者和使用者的上述要求,是需要解决的技术问题。



技术实现要素:

本发明主要解决的技术问题是提供一种基于区块链的文件管理方法和装置,能够实现电子文件只分发给授权的用户,且能确保电子文件的原始性。

为解决上述技术问题,本发明采用的技术方案是:

第一方面,本发明实施例提供一种基于区块链的文件管理的方法,包括:接收第一用户的第一请求,所述第一请求用于上传第一电子文件;根据预设的分发规则将所述第一电子文件保存到分布式文件系统;提取所述第一电子文件的第一文件信息;将所述第一文件信息上传到所述第一用户所在的区块链上。

可选的设计,所述根据预设的分发规则将所述第一电子文件保存到分布式文件系统具体包括:将所述第一电子文件保存到为执行所述方法的装置配置的分布式文件系统;和/或将所述第一电子文件保存到为所述第一用户配置的分布式文件系统。

可选的设计,所述方法进一步包括:接收第二用户的第二请求,所述第二请求用于验证第二电子文件,所述第二电子文件由所述第一用户生成;提取所述第二电子文件的第二文件信息;查询所述第一用户所在的区块链上是否存在所述第二文件信息;返回查询结果给所述第二用户。

可选的设计,所述方法进一步包括:接收第三用户的第三请求,所述第三请求用于验证第三文件信息,所述第三文件信息由所述第一用户生成;查询所述第一用户所在的区块链上是否存在所述第三文件信息;返回查询结果给所述第三用户。

可选的设计,所述方法进一步包括:从为所述方法执行的装置配置的分布式文件系统或为所述第一用户配置的分布式文件系统中获取与所述第三文件信息对应的第三电子文件;相应地,返回查询结果给所述第三用户进一步包括:返回所述第三电子文件给所述第三用户。

可选的设计,所述第一文件信息包括:所述第一电子文件的大小,所述第一电子文件的消息摘要算法5值和所述第一电子文件的安全散列算法256值。

可选的设计,所述分布式文件系统包括fastdfs、hadoophdfs、ceph、glusterfs或lustre。

可选的设计,所述区块链包括公有链、私有链或联盟链。

可选的设计,当所述第一用户所在的区块链为联盟链时,所述将所述第一文件信息上传到所述第一用户所在的区块链上具体包括:通过超级账本区块链系统将所述第一文件信息上传到所述第一用户所在的区块链上。

可选的设计,所述通过超级账本区块链系统将所述第一文件信息上传到所述第一用户所在的区块链上具体包括:将所述第一文件信息发送给所述第一用户所在的区块链上的背书节点;接收所述背书节点返回的交易结果;将所述交易结果和所述第一文件信息发给所述第一用户所在的区块链上的中心节点,所述中心节点为执行所述方法的装置;所述中心节点保存所述第一文件信息;所述中心节点将所述第一文件信息发送给所述第一用户所在区块链上的其他节点;所述第一用户所在区块链上的其他节点保存所述第一文件信息。

第二方面,本发明另一实施例提供一种基于区块链的文件管理装置,包括:文件管理模块,用于接收第一用户的第一请求,所述第一请求用于上传第一电子文件,根据预设的分发规则将所述第一电子文件保存到分布式文件系统;提取所述第一电子文件的第一文件信息,发送所述第一文件信息;区块链模块,用于接收所述第一文件信息,将所述第一文件信息上传到所述第一用户所在的区块链上。

可选的设计,所述文件管理模块所述文件管理模块还用于根据预设的分发规则将所述第一电子文件保存到分布式文件系统具体包括:所述文件管理模块将所述第一电子文件保存到为所述装置配置的分布式文件系统;和/或所述文件管理模块将所述第一电子文件保存到为所述第一用户配置的分布式文件系统。

可选的设计,所述装置还包括:文件验证模块,用于接收第二用户的第二请求,所述第二请求用于验证第二电子文件,所述第二电子文件由所述第一用户生成;提取第二电子文件的第二文件信息;将所述第二文件信息发给所述区块链模块。相应地,所述区块链模块,还用于查询所述第一用户所在的区块链上是否存在所述第二文件信息,将查询结果反馈给所述文件验证模块;所述文件验证模块,用于将所述查询结果反馈给所述第二用户。

可选的设计,所述文件验证模块还用于:接收第三用户的第三请求,所述第三请求用于验证第三文件信息,所述第三文件信息由所述第一用户生成;将所述第三文件信息发给所述区块链模块;相应地,所述区块链模块还用于查询所述第一用户所在的区块链上是否存在所述第三文件信息,返回查询结果给所述文件验证模块;相应地,所述文件验证模块,还用于返回查询结果给所述第三用户。

可选的设计,所述文件验证模块还用于发送第四请求给文件管理模块,所述第四请求用于查询与所述第三文件信息对应的第三电子文件;相应地,所述文件管理模块,还用于从为所述装置配置的文件分发系统或为所述第一用户配置的文件分发系统中获取与所述第三文件信息对应的第三电子文件;发送所述第三电子文件;所述文件验证模块还用于接收所述文件管理模块发来的所述第三电子文件,将所述第三电子文件发给所述第三用户。

可选的设计,所述第一文件信息包括:所述第一电子文件的大小、所述第一电子文件的消息摘要算法5值和所述第一电子文件的安全散裂算法256值。

第三方面,本发明实施例还提供一种基于区块链的文件管理装置,包括:存储器,存储有计算机指令;处理器,与所述存储器相连,用于调用所述存储器中存储的计算机指令,以执行上述第一方面或第一方面的任意可选的设计中的文件管理的方法。

第四方面,本发明实施例还提供一种计算机可读存储介质,所述可读存储介质中存储有计算机指令,所述指令在计算机上运行时,使得计算机执行上述第一方面或第一方面的任意可选的设计中的的文件管理方法。

本发明实施例提供的一种基于区块链的文件管理方法和装置,能够实现电子文件只分发给授权的用户,且能确保电子文件的原始性。

附图说明

图1是本发明一种文件管理装置的一较佳实施例的示意图;

图2是本发明一种文件管理方法的一较佳实施例的示意图;

图3是本发明一种文件管理装置的另一较佳实施例的示意图。

具体实施方式

下面结合附图对本发明的较佳实施例进行详细阐述,以使本发明的优点和特征能更易于被本领域技术人员理解,从而对本发明的保护范围做出更为清楚明确的界定。

电子文件相对于传统纸质文件而言,电子文件的内容与载体是相对独立的。即对于纸质文件来说,内容的原始性附着在形式的原始性上,人们可以通过借助形式的原始性来证实和确认内容的原始性。但电子文件的内容与形式是相对独立的,电子文件易于修改,而且改动后可以不留任何痕迹;此外,电子文件不再具有固定的存储载体。人们可以根据利用的需求,采用不同的方式输出电子文件;对于长期保存的电子文件,还需要定期进行复制,转换载体,以防信息损失。所以,如何确保电子文件的原始性是业界一直以来需要解决的技术难题。需要说明的是,本申请中的文件指的是一组相关联元素的有序序列。文件可以包含的内容非常广泛。例如具有一定独立功能的程序模块、一组数据或一组文字都可以为一个文件。

本申请的发明人经过对电子文件的研究,以及对区块链技术的深入研究发现,通过将区块链技术引入电子文件的原始性认定,可以很好地解决上述提到的现有技术的问题。

区块链是比特币的一个重要概念,它本质上是一个去中心化的数据库,同时作为比特币的底层技术,是一串使用密码学方法相关联产生的数据块。每一个数据块中包含了一次比特币网络交易的信息,用于验证其信息的有效性(即防伪)和生成下一个区块。区块链有一个很重要的特点就是不可篡改性,即一旦数据写入区块链,任何人,甚至是系统管理员都无法更改它。这样,将数据上传区块链后,作为数据提供者,可以通过区块链技术证明数据未被更改;作为数据接收者,也可以通过区块链技术确保数据从未被更改。

本申请的发明人在研究中发现,提取出电子文件的文件信息,所述文件信息能用于确定所述电子文件的内容;将所述文件信息上传到区块链上,这样,基于区块链的不可篡改技术,一旦文件信息上传到区块链上,该文件信息会在区块链中保存且不被篡改。如果电子文件的内容被修改,则修改前后的电子文件的文件信息是不同的,所以验证电子文件是否被修改,只需提取电子文件的文件信息,将其与上传到区块链的文件信息进行比较,如果相同,则说明所述电子文件未被修改。后续电子文件一旦被修改,则修改后的电子文件的文件信息与保存在区块链上的文件信息不同,从而实现了对电子文件的原始性验证,为电子文件的进一步应用提供了有力支持。

基于对电子文件的原始性验证,本申请的发明人提出了一个文件管理系统,该文件管理系统能让不同用户对电子文件进行原始性验证,同时也可以仅将电子文件发给授权的用户查看。

本发明实施例提供一种基于区块链的文件管理装置,包括:

100、文件管理模块,用于接收第一用户的第一请求,所述第一请求用于上传第一电子文件,根据预设的分发规则将所述第一电子文件保存到分布式文件系统;提取所述第一电子文件的第一文件信息,发送所述第一文件信息;

102、区块链模块,用于接收所述第一文件信息,将所述第一文件信息上传到所述第一用户所在的区块链上;

104、文件验证模块,用于接收第二用户的第二请求,所述第二请求用于验证第二电子文件,提取第二电子文件的第二文件信息;将所述第二文件信息发给所述区块链模块;

相应地,所述区块链模块,用于查询所述区块链上是否存在所述第二文件信息,将查询结果反馈给所述文件验证模块;

所述文件验证模块,用于将所述查询结构反馈给所述第二用户。

为了描述清楚,下面对本发明实施例提供的文件管理系统进行详细介绍,包括:

文件管理模块,用于接收第一用户的第一请求,所述第一请求用于上传第一电子文件,根据预设的分发规则将所述第一电子文件保存到分布式文件系统;提取所述第一电子文件的第一文件信息,发送所述第一文件信息;

在本发明实施例的具体实现时,第一电子文件可以适用于在各类需要上传电子文件的场景。本申请不作具体的限定。例如,当银行需要上传客户的基本信息时,所述第一电子文件为客户的基本信息;当医院需要上传病人的就诊记录时,所述第一电子文件为病人的就诊记录。

在本发明实施例的具体实现时,文件管理模块如何根据预设的分发规则将所述第一电子文件保存到分布式文件系统,这与电子文件使用的场景相关。不同的使用场景可以选择合适的分布式文件系统,分布式文件系统例如可以包括但不限于高速分布式文件系统(fastdfs;fastdistributedfilesystem)、海道普分布式文件系统(hdfs;hadoopdistributedfilesystem)、赛普分布式文件系统(ceph);格拉斯特夫分布式文件系统(glusterfs)或拉斯特分布式文件系统(lustre)。本申请不做具体限定。预设的分发规则即用于规定电子文件在哪些存储器上存储。这也是根据电子文件的具体使用场景来规定的,本申请同样不做具体限定。本发明实施例以fastdfs举例来说明,fastdfs是一个开源的轻量级分布式文件系统,包括多个存储器。在本发明实施例的具体实现时,文件管理模块可以对fastdfs进行配置,即配置预设的分发规则,即预先配置好第一电子文件需要在哪些存储器上存储。优选地,在本发明实施例的具体实现时,为执行本方法的装置配置分布式文件系统,这样,所述根据预设的分发规则将所述第一电子文件保存到分布式文件系统具体包括:将所述第一电子文件保存到为执行所述方法的装置配置的分布式文件系统;和/或将所述第一电子文件保存到为所述第一用户配置的分布式文件系统。为了方便理解,以医院的场景举例说明一下预设的分发规则,假设某当一电子文件为医院的某个就诊记录时,当该医院通过执行本方法来上传该医院的就诊记录时,该就诊记录可以配置成需要保存在为执行本方法的装置配置的分布式文件系统;和/或保存在为该医院配置的分布式文件系统。在本发明实施例的具体实现时,更具体的实现细节可以参考电子科技大学硕士学位论文《基于fastdfs云存储系统的研究与设计》作者刘俊强,论文提交日期2016年3月28日。后续fastdfs进行的改进,本发明实施例的实现也可相应进行改进。其他的分布式文件系统,例如hdfs的具体实现可以参考《高可用性的hdfs——hadoop分布式文件系统深度实践》,文艾,王磊著,清华大学出版社,isbn:9787302282587,出版时间:2012年9月1日。ceph的具体实现可以参考《ceph设计原理与实现》,谢型果等著,机械工业出版社,isbn:9787111578420,出版时间:2017年10月1日。

在本发明实施例的具体实现时,文件管理模块如何从所述第一电子文件中提取第一文件信息,本申请并不做具体限定。第一文件信息用于唯一确定第一电子文件的内容。优选地,第一文件信息为第一电子文件的大小、第一电子文件的消息摘要算法5(messagedigestalgorithm5;md5)和安全散列算法256(securehashalgorithm256;sha256)值;此外,md5可以替换为消息摘要算法6(messagedigestalgorithm6;md6);sha256值可以为安全散列算法-2(securehashalgorithm-2;sha-2)的sha256值,也可以为安全散列算法-3(securehashalgorithm-3;sha-3)的sha256值;通常,安全散列算法-224(securehashalgorithm-224;sha-224)、安全散列算法-256(securehashalgorithm-256;sha-256)、安全散列算法-384(securehashalgorithm-384;sha-384),和安全散列算法-512(securehashalgorithm-512;sha-512)并称为sha-2。具体采用哪种安全散裂算法需要考虑具体的应用场景对安全的级别和算法速度的要求,本申请不做具体限定。

区块链模块,用于接收所述第一文件信息,将所述第一文件信息上传到区块链上;

在本发明实施例的具体实现时,区块链模块根据电子文件具体上传的场景不同,将所述第一文件信息上传到不同的区块链上。一般来说,区块链根据开发对象的不同,分为三种类型:公有链(publicblockchain)、私有链(privateblockchain)、联盟链(consortiumblockchain)。公有链即公有的区块链,读写权限对所有人开放;私有链即私有的区块链,读写权限对某个节点开放;联盟链即联盟区块链,读写权限对加入联盟的节点开放。在本发明实施例的具体实现时,根据电子文件具体上传的场景不同,可以将文件信息上传到公有链、私有链和/或联盟链上。在此本申请不做具体的限定。为了方便理解如何将文件信息上传到区块链上,本发明实施例以联盟链中的超级账本(hyperledger)区块链系统举例来说明,例如:在本发明实施例的具体实现时,当所述第一用户所在的区块链为联盟链时,将所述第一文件信息上传到所述第一用户所在的区块链上具体包括,通过超级账本区块链系统将所述第一文件信息上传到所述第一用户所在的区块链上。fabric是基于企业间联盟区块链开发的超级账本区块链系统。fabric架构中包括四种对象:客户端、对等节点(peer节点)、中心节点(order节点)、ca;其中,客户端是提交用户操作的地方。客户端分别和peer节点和order节点相连。为了安全,客户端必须通过ca认证,否则无法使用区块链。peer节点,包括背书节点和记账节点,它们统称为peer节点。背书节点用于为交易做保障。所有区块链上的交易、智能合约都只会运行一次,那就是在背书节点上。背书节点运行的是模拟结果。当运行、校验都没问题后,该模拟结果才能被真正记录于区块链,形成不可篡改的记录。记账节点是最普通的节点,它的功能就是记账。中心节点:fabric的共识机制是由中心节点来完成的。它主要做两件事:1、从全网客户端接收交易,讲交易按规则排序;2、将排完序的交易按固定时间间隔打包成区块,发放给所在区块链上的其他节点。ca是fabric的安全、认证模块。ca即证书颁发机构。它用来检查区块链的身份是否是有效、合法的。只有被ca机构认证的节点才可以在区块链上交易。需要说明的是,在fabric上,任何对数据的增删改查都是交易。在本发明实施例中,将文件信息上传到区块链上即属于交易。fabric的具体交易流程可以参考https://www.hyperledger.org/projects/fabric。也可以参考《hyperledgerfabric开发实战:快速掌握区块链技术》杨毅著,电子工业出版社;isbn:9787121341731,出版日期2018年6月1日;

在本发明实施例的具体实现时,区块链模块可以作为fabric的客户端,也可以作为fabric的中心节点。优选地,区块链模块作为fabric的中心节点。当区块链模块作为fabric的客户端时,所述通过超级账本区块链系统将所述第一文件信息上传到所述第一用户所在的区块链上具体包括:将所述第一文件信息发送给所述第一用户所在的区块链上的背书节点;接收所述背书节点返回的交易结果;将所述交易结果和所述第一文件信息发给所述第一用户所在的区块链上的中心节点;所述中心节点保存所述第一文件信息;所述中心节点将所述第一文件信息发送给所述第一用户所在的区块链上的其他节点;所述第一用户所在区块链上的其他节点保存所述第一文件信息。需要说明的是,在fabric架构中,客户端是需要先经过ca认证的。

在本发明实施例的具体实现时,本方法的执行主体可以作为fabric的客户端,也可以作为fabric的中心节点。优选地,本方法的执行主体作为fabric的中心节点。当本方法的执行主体作为fabric的客户端时,所述通过超级账本区块链系统将所述第一文件信息上传到所述第一用户所在的区块链上具体包括:将所述第一文件信息发送给所述第一用户所在的区块链上的背书节点;接收所述背书节点返回的交易结果;将所述交易结果和所述第一文件信息发给所述第一用户所在的区块链上的中心节点;所述中心节点保存所述第一文件信息;所述中心节点将所述第一文件信息发送给所述第一用户所在的区块链上的其他节点;所述第一用户所在区块链上的其他节点保存所述第一文件信息。需要说明的是,在fabric架构中,客户端是需要先经过ca认证的。

当区块链模块作为fabric的中心节点,即作为所述第一用户所在的区块链上的中心节点时,需要在本文件管理装置侧虚拟一个逻辑节点,所述逻辑节点作为fabric的客户端;所述通过超级账本区块链系统将所述第一文件信息上传到所述第一用户所在的区块链上具体包括:所述逻辑节点将所述第一文件信息发送给所述第一用户所在的区块链上的背书节点;所述逻辑节点接收所述背书节点返回的交易结果;所述逻辑节点将所述交易结果和所述第一文件信息发给所述第一用户所在的区块链上的中心节点;所述中心节点保存所述第一文件信息;所述中心节点将所述第一文件信息发送给所述第一用户所在的区块链上的其他节点;所述第一用户所在区块链上的其他节点保存所述第一文件信息保存所述第一文件信息。

需要说明的是,在本发明实施例通过超级账本区块链系统实现将所述第一文件信息上传到所述第一用户所在的区块链上时,更具体的实现细节可以参考期刊文章“超级账本fabric的架构与设计”,《电脑编程技巧与维护》,2017年18期。也可以参考《hyperledgerfabric开发实战:快速掌握区块链技术》杨毅著,电子工业出版社;isbn:9787121341731,出版日期2018年6月1日;后续fabric进行的改进,本发明实施例的实现也可相应进行改进。

需要说明的是,本发明实施例中各个模块的执行顺序本申请并不做限定。文件管理模块可以先根据预设的分发规则将所述第一电子文件保存到分布式文件系统,然后区块链模块再将所述第一文件信息上传到所述第一用户所在的区块链上;也可以区块链模块先将所述第一文件信息上传到所述第一用户所在的区块链上,然后文件管理模块再根据预设的分发规则将所述第一电子文件保存在分布式文件系统。此外,当预设的分发规则为将所述第一电子文件保存到为执行所述方法的装置配置的分布式文件系统;和将所述第一电子文件保存到为所述第一用户配置的分布式文件系统中时,文件管理模块也可以先将所述第一电子文件保存到为执行所述方法的装置配置的分布式文件系统;然后区块链模块将所述第一文件信息上传到所述第一用户所在的区块链上;之后文件管理模块再将所述第一电子文件保存到为执行所述方法的装置配置的分布式文件系统。

通过实施本发明实施例的文件管理装置,能够实现电子文件只分发给授权的用户;且能确保电子文件的原始性。

此外,电子文件的文件信息上传到区块链上后,如果有用户需要对该电子文件的原始性进行验证,则所述装置可以进一步包括:

文件验证模块,用于接收第二用户的第二请求,所述第二请求用于验证第二电子文件,所述第二电子文件由所述第一用户生成;提取所述第二电子文件的第二文件信息;将所述第二文件信息发给所述区块链模块;

在本发明实施例的具体实现时,第二电子文件和第一电子文件一样可以适用于在各类需要上传电子文件的场景。例如,当银行需要上传客户的基本信息时,所述第二电子文件为客户的基本信息;当医院需要上传病人的就诊记录时,所述第二电子文件为病人的就诊记录。

在本发明实施例的具体实现时,文件验证模块如何提取第二电子文件的第二文件信息,和如何提取第一电子文件的第一文件信息的方法是相应的。简单来说,如果提取第一电子文件的第一文件信息包括文件大小、md5和sha256值;那么提取第二电子文件的第二文件信息业包括文件大小,md5和sha256值。

相应地,所述区块链模块,用于查询所述第一用户所在的区块链上是否存在所述第二文件信息,将查询结果反馈给所述文件验证模块;

在本发明实施例的具体实现时,如何在区块链上查询文件信息,这与文件信息上传到的区块链的类型相关。本申请不做具体限定。本发明实施例仍以联盟链中的超级账本(hyperledger)区块链系统举例来说明,fabric是基于企业间联盟区块链开发的超级账本开源系统。fabric的相关信息请见前面的描述。在本发明实施例的具体实现时,文件管理模块提取所述第二电子文件的第二文件信息,将所述第二文件信息发给区块链模块;区块链模块如何查询所述第一用户所在的区块链上是否存在第二文件信息,同如何将第一文件信息上传到所述第一用户所在的区块链上,具体的实现方法都是类似的,因为对于fabric来说,查询和上传都属于交易。需要说明的是,区块链模块可以作为fabric的客户端,也可以作为fabric的中心节点。优选地,区块链模块作为fabric的中心节点。当区块链模块作为fabric的中心节点,即作为所述第一用户所在的区块链上的中心节点时,需要在本文件管理装置侧虚拟一个逻辑节点,所述逻辑节点作为fabric的客户端来查询所述第一用户所在的区块链上是否存在第二文件信息。如果查询到所述第一用户所在的区块链上的所述第一文件信息与所述第二文件信息相同时,则说明所述第二电子文件未被修改,即所述第二电子文件与所述第一电子文件相同。如果所述第一用户所在的区块链上没有查询到与所述第二文件信息相同的文件信息时,则说明所述第二电子文件未在所述区块链上保存文件信息或者所述第二电子文件的已被修改,也就是说所述第二电子文件的原始性被破坏。需要说明的是,在本发明实施例的具体实现时,更具体的实现细节可以参考期刊文章“超级账本fabric的架构与设计”,《电脑编程技巧与维护》,2017年18期。也可以参考《hyperledgerfabric开发实战:快速掌握区块链技术》杨毅著,电子工业出版社;isbn:9787121341731,出版日期2018年6月1日;后续fabric进行的改进,本发明实施例的实现也可相应进行改进。区块链模块反馈查询结果给文件验证模块。

所述文件验证模块,用于将所述查询结果反馈给所述第二用户。

作为一种可选的设计,如果某用户没有电子文件但拥有该电子文件的文件信息,需要通过文件信息来验证对应的电子文件的原始性,则所述文件验证模块,还用于接收第三用户的第三请求,所述第三请求用于验证第三文件信息;所述第三文件信息由所述第一用户生成;将所述第三文件信息发给所述区块链模块;

相应地,所述区块链模块还用于查询所述第一用户所在的区块链上是否存在所述第三文件信息,返回查询结果给所述文件验证模块;

相应地,所述文件验证模块,还用于返回查询结果给所述第三用户。

需要说明的是,如何查询所述第一用户所在的区块链上是否存在所述第三文件信息的方法和如何查询所述区块链上是否存在所述第二文件信息的方法是一样的,为了简洁起见,此处不再赘述。

进一步地,如果第三用户希望查看第三文件信息对应的电子文件,则所述文件验证模块还发送第四请求给文件管理模块,所述第四请求用于查询与所述第三文件信息对应的第三电子文件;

相应地,所述文件管理模块,还用于从为所述装置配置的分布式文件系统或为所述第一用户配置的分布式文件系统中获取与所述第三文件信息对应的第三电子文件;发送所述第三电子文件;

在本发明实施例的具体实现时,如何从分布式系统中获取电子文件,和所采用的分布式系统的设计相关。具体可根据所采用的分布式系统的设计来获取电子文件,本申请不做具体限定。

相应地,所述文件验证模块还用于接收所述文件管理模块发来的所述第三电子文件,将所述第三电子文件发给所述第三用户。

作为一种可选的设计,如果第三用户希望验证电子文件的原始性,同时希望查看电子文件,则文件验证模块也可以在查询到第三电子文件和验证区块链上存在第三文件信息后,将查询结果和第三电子文件一并返回给第三用户。

需要说明的是,本申请实施例中的文件管理模块、区块链模块和文件验证模块的划分是示意性的,仅仅为一种逻辑功能划分,具体实现时可以有另外的划分方式。另外,在本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中,具体实现时也可以根据需要集成在一个或两个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。此外,第一用户与第二用户、第三用户有可能相同,也可能不同。

本发明实施例基于区块链的不可篡改的特点,将文件信息上传到区块链上,后续不同用户可以通过该区块链实现对电子文件的原始性验证,同时,电子文件通过预设的分发规则可以在指定的分布式文件系统中存储,这样实现了只有部分用户可以获取电子文件,为电子文件的保密性提供了支持。进一步地,由于不同用户可以通过该区块链实现对电子文件的原始性验证,也避免了通过保留电子文件来验证其原始性,相应地节省了存储空间。

本发明另一实施例提供一种基于区块链的文件管理方法,该方法包括:

200、接收第一用户的第一请求,所述第一请求用于上传第一电子文件;

在本发明实施例的具体实现时,第一电子文件可以适用于在各类需要上传电子文件的场景。本申请不作具体的限定。例如,当银行需要上传客户的基本信息时,所述第一电子文件为客户的基本信息;当医院需要上传病人的就诊记录时,所述第一电子文件为病人的就诊记录。

202、根据预设的分发规则将所述第一电子文件保存到分布式文件系统;

在本发明实施例的具体实现时,如何根据预设的分发规则将所述第一电子文件保存到到分布式文件系统,这与电子文件使用的场景相关。不同的使用场景可以选择合适的分布式文件系统,分布式文件系统例如可以包括但不限于高速分布式文件系统(fastdfs;fastdistributedfilesystem)、海道普分布式文件系统(hdfs;hadoopdistributedfilesystem)、赛普分布式文件系统(ceph);格拉斯特夫分布式文件系统(glusterfs)或拉斯特分布式文件系统(lustre)。本申请不做具体限定。预设的分发规则即用于规定电子文件在哪些存储器上存储。这也是根据电子文件的具体使用场景来规定的,本申请同样不做具体限定。本发明实施例以fastdfs举例来说明,fastdfs是一个开源的轻量级分布式文件系统,包括多个存储器。在本发明实施例的具体实现时,可以对fastdfs进行配置,即配置预设的分发规则,即预先配置好第一电子文件需要在哪些存储器上存储。优选地,在本发明实施例的具体实现时,为执行本方法的装置配置分布式文件系统,这样,所述根据预设的分发规则将所述第一电子文件保存到分布式文件系统具体包括:将所述第一电子文件保存到为执行所述方法的装置配置的分布式文件系统;和/或将所述第一电子文件保存到为所述第一用户配置的分布式文件系统。为了方便理解,以医院的场景举例说明一下预设的分发规则,假设某当一电子文件为医院的某个就诊记录时,当该医院通过执行本方法来上传该医院的就诊记录时,该就诊记录可以配置成需要保存在为执行本方法的装置配置的分布式文件系统;和/或保存在为该医院配置的分布式文件系统。在本发明实施例的具体实现时,更具体的实现细节可以参考电子科技大学硕士学位论文《基于fastdfs云存储系统的研究与设计》作者刘俊强,论文提交日期2016年3月28日;后续fastdfs进行的改进,本发明实施例的实现也可相应进行改进。其他的分布式文件系统,例如hdfs的具体实现可以参考《高可用性的hdfs——hadoop分布式文件系统深度实践》,文艾,王磊著,清华大学出版社,isbn:9787302282587,出版时间:2012年9月1日。ceph的具体实现可以参考《ceph设计原理与实现》,谢型果等著,机械工业出版社,isbn:9787111578420,出版时间:2017年10月1日。

204、提取所述第一电子文件的第一文件信息;

在本发明实施例的具体实现时,如何从所述第一电子文件中提取第一文件信息,本申请并不做具体限定。第一文件信息用于唯一确定第一电子文件的内容。优选地,第一文件信息为第一电子文件的大小、第一电子文件的消息摘要算法5(messagedigestalgorithm5;md5)和安全散列算法256(securehashalgorithm256;sha256)值;此外,md5可以替换为消息摘要算法6(messagedigestalgorithm6;md6);sha256值可以为安全散列算法-2(securehashalgorithm-2;sha-2)的sha256值,也可以为安全散列算法-3(securehashalgorithm-3;sha-3)的sha256值;通常,安全散列算法-224(securehashalgorithm-224;sha-224)、安全散列算法-256(securehashalgorithm-256;sha-256)、安全散列算法-384(securehashalgorithm-384;sha-384),和安全散列算法-512(securehashalgorithm-512;sha-512)并称为sha-2。具体采用哪种安全散裂算法需要考虑具体的应用场景对安全的级别和算法速度的要求,本申请不做具体限定。

206、将所述第一文件信息上传到所述第一用户所在的区块链上。

在本发明实施例的具体实现时,根据电子文件具体上传的场景不同,将所述第一文件信息上传到不同的区块链上。一般来说,区块链根据开发对象的不同,分为三种类型:公有链(publicblockchain)、私有链(privateblockchain)、联盟链(consortiumblockchain)。公有链即公有的区块链,读写权限对所有人开放;私有链即私有的区块链,读写权限对某个节点开放;联盟链即联盟区块链,读写权限对加入联盟的节点开放。在本发明实施例的具体实现时,根据电子文件具体上传的场景不同,可以将文件信息上传到公有链、私有链和/或联盟链上。在此本申请不做具体的限定。为了方便理解如何将文件信息上传到区块链上,本发明实施例以联盟链中的超级账本(hyperledger)区块链系统举例来说明。例如:在本发明实施例的具体实现时,当所述第一用户所在的区块链为联盟链时,将所述第一文件信息上传到所述第一用户所在的区块链上具体包括,通过超级账本区块链系统将所述第一文件信息上传到所述第一用户所在的区块链上。fabric是基于企业间联盟区块链开发的超级账本区块链系统。fabric架构中包括四种对象:客户端、对等节点(peer节点)、中心节点(order节点)、数字授权(certificateauthority;ca);其中,客户端是提交用户操作的地方。客户端分别和peer节点和order节点相连。为了安全,客户端必须通过ca认证,否则无法使用区块链。peer节点,包括背书节点和记账节点,它们统称为peer节点。背书节点用于为交易做保障。所有区块链上的交易、智能合约都只会运行一次,那就是在背书节点上。背书节点运行的是模拟结果。当运行、校验都没问题后,该模拟结果才能被真正记录于区块链,形成不可篡改的记录。记账节点是最普通的节点,它的功能就是记账。中心节点:fabric的共识机制是由中心节点来完成的。它主要做两件事:1、从全网客户端接收交易,讲交易按规则排序;2、将排完序的交易按固定时间间隔打包成区块,发放给所在区块链上的其他节点。ca是fabric的安全、认证模块。ca即证书颁发机构。它用来检查区块链的身份是否是有效、合法的。只有被ca机构认证的节点才可以在区块链上交易。需要说明的是,在fabric上,任何对数据的增删改查都是交易。在本发明实施例中,将文件信息上传到区块链上即属于交易。fabric的具体交易流程可以参考https://www.hyperledger.org/projects/fabric。也可以参考《hyperledgerfabric开发实战:快速掌握区块链技术》杨毅著,电子工业出版社;isbn:9787121341731,出版日期2018年6月1日;

在本发明实施例的具体实现时,本方法的执行主体可以作为fabric的客户端,也可以作为fabric的中心节点。优选地,本方法的执行主体作为fabric的中心节点。当本方法的执行主体作为fabric的客户端时,所述通过超级账本区块链系统将所述第一文件信息上传到所述第一用户所在的区块链上具体包括:将所述第一文件信息发送给所述第一用户所在的区块链上的背书节点;接收所述背书节点返回的交易结果;将所述交易结果和所述第一文件信息发给所述第一用户所在的区块链上的中心节点;所述中心节点保存所述第一文件信息;所述中心节点将所述第一文件信息发送给所述第一用户所在的区块链上的其他节点;所述第一用户所在区块链上的其他节点保存所述第一文件信息。需要说明的是,在fabric架构中,客户端是需要先经过ca认证的。

当本方法的执行主体作为fabric的中心节点,即作为所述第一用户所在的区块链上的中心节点时,需要在本方法的执行主体侧虚拟一个逻辑节点,所述逻辑节点作为fabric的客户端;所述通过超级账本区块链系统将所述第一文件信息上传到所述第一用户所在的区块链上具体包括:所述逻辑节点将所述第一文件信息发送给所述第一用户所在的区块链上的背书节点;所述逻辑节点接收所述背书节点返回的交易结果;所述逻辑节点将所述交易结果和所述第一文件信息发给所述第一用户所在的区块链上的中心节点;所述中心节点保存所述第一文件信息;所述中心节点将所述第一文件信息发送给所述第一用户所在的区块链上的其他节点;所述第一用户所在区块链上的其他节点保存所述第一文件信息保存所述第一文件信息;

需要说明的是,在本发明实施例通过超级账本区块链系统实现将所述第一文件信息上传到所述第一用户所在的区块链上时,更具体的实现细节可以参考期刊文章“超级账本fabric的架构与设计”,《电脑编程技巧与维护》,2017年18期。也可以参考《hyperledgerfabric开发实战:快速掌握区块链技术》杨毅著,电子工业出版社;isbn:9787121341731,出版日期2018年6月1日;后续fabric进行的改进,本发明实施例的实现也可相应进行改进。

需要说明的是,本发明实施例中各个步骤的顺序本申请并不做限定。可以先根据预设的分发规则将所述第一电子文件保存到分布式文件系统,然后再将所述第一文件信息上传到所述第一用户所在的区块链上;也可以先将所述第一文件信息上传到所述第一用户所在的区块链上,然后再根据预设的分发规则将所述第一电子文件保存在分布式文件系统。此外,当预设的分发规则为将所述第一电子文件保存到为执行所述方法的装置配置的分布式文件系统;和将所述第一电子文件保存到为所述第一用户配置的分布式文件系统中时,也可以先将所述第一电子文件保存到为执行所述方法的装置配置的分布式文件系统;然后将所述第一文件信息上传到所述第一用户所在的区块链上;之后再将所述第一电子文件保存到为执行所述方法的装置配置的分布式文件系统。

通过实施本发明实施例的文件管理方法,能够实现电子文件只分发给授权的用户;且能确保电子文件的原始性。

此外,电子文件的文件信息上传到区块链上后,如果有用户需要对该电子文件的原始性进行验证,则所述方法可以进一步包括:

208、接收第二用户的第二请求,所述第二请求用于验证上传的第二电子文件,所述第二电子文件由所述第一用户生成;

在本发明实施例的具体实现时,第二电子文件和第一电子文件一样可以适用于在各类需要上传电子文件的场景。例如,当银行需要上传客户的基本信息时,所述第二电子文件为客户的基本信息;当医院需要上传病人的就诊记录时,所述第二电子文件为病人的就诊记录。

210、提取所述第二电子文件的第二文件信息;

在本发明实施例的具体实现时,如何提取第二电子文件的第二文件信息,和如何提取第一电子文件的第一文件信息的方法是相应的。简单来说,如果提取第一电子文件的第一文件信息包括文件大小、md5和sha256值;那么提取第二电子文件的第二文件信息业包括文件大小,md5和sha256值。

212、查询所述第一用户所在的区块链上是否存在所述第二文件信息;

在本发明实施例的具体实现时,如何在区块链上查询文件信息,这与文件信息上传到的区块链的类型相关。本申请不做具体限定。本发明实施例仍以联盟链中的超级账本(hyperledger)区块链系统举例来说明,fabric是基于企业间联盟区块链开发的超级账本开源系统。fabric的相关信息请见前面的描述。在本发明实施例的具体实现时,如何查询所述第一用户所在的区块链上是否存在第二文件信息,同如何将第一文件信息上传到所述第一用户所在的区块链上,具体的实现方法都是类似的,因为对于fabric来说,查询和上传都属于交易。需要说明的是,本方法的执行主体可以作为fabric的客户端,也可以作为fabric的中心节点。优选地,本方法的执行主体作为fabric的中心节点。当本方法的执行主体作为fabric的中心节点,即作为所述第一用户所在的区块链上的中心节点时,需要在本方法的执行主体侧虚拟一个逻辑节点,所述逻辑节点作为fabric的客户端来查询所述第一用户所在的区块链上是否存在第二文件信息。如果查询到所述第一用户所在的区块链上的所述第一文件信息与所述第二文件信息相同时,则说明所述第二电子文件未被修改,即所述第二电子文件与所述第一电子文件相同。如果所述第一用户所在的区块链上没有查询到与所述第二文件信息相同的文件信息时,则说明所述第二电子文件未在所述区块链上保存文件信息或者所述第二电子文件的已被修改,也就是说所述第二电子文件的原始性被破坏。需要说明的是,在本发明实施例的具体实现时,更具体的实现细节可以参考期刊文章“超级账本fabric的架构与设计”,《电脑编程技巧与维护》,2017年18期。也可以参考《hyperledgerfabric开发实战:快速掌握区块链技术》杨毅著,电子工业出版社;isbn:9787121341731,出版日期2018年6月1日;后续fabric进行的改进,本发明实施例的实现也可相应进行改进。

214、返回查询结果给所述第二用户。

作为一种可选的设计,如果某用户没有电子文件但拥有该电子文件的文件信息,需要通过文件信息来验证对应的电子文件的原始性,则所述方法可以进一步包括:

216、接收第三用户的第三请求,所述第三请求用于验证第三文件信息,所述第三文件信息由所述第一用户生成;

218、查询所述第一用户所在的区块链上是否存在所述第三文件信息;

220、返回查询结果给所述第三用户。

需要说明的是,218中如何查询所述区块链上是否存在所述第三文件信息的方法和212是一样的,为了简洁起见,此处不再赘述。

进一步地,如果第三用户希望查看第三文件信息对应的电子文件,则所述方法进一步包括:

222、从为所述方法执行的装置配置的分布式文件系统或为所述第一用户配置的分布式文件系统中获取与所述第三文件信息对应的第三电子文件。

在本发明实施例的具体实现时,如何从分布式系统中获取电子文件,和所采用的分布式系统的设计相关。具体可根据所采用的分布式系统的设计来获取电子文件,本申请不做具体限定。

224、返回第三电子文件给所述第三用户。

作为一种可选的设计,如果第三用户希望验证电子文件的原始性,同时希望查看电子文件,则本方法也可以在查询到第三电子文件和验证区块链上存在第三文件信息后,将查询结果和第三电子文件一并返回给第三用户。

应该理解,本发明的各种实施例中,上述各过程中序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本发明实施例的实施过程构成任何限定。

本发明实施例基于区块链的不可篡改的特点,将文件信息上传到区块链上,后续不同用户可以通过该区块链实现对电子文件的原始性验证,同时,电子文件通过预设的分发规则可以在指定的分布式文件系统中存储,这样实现了只有部分用户可以获取电子文件,为电子文件的保密性提供了支持。进一步地,由于不同用户可以通过该区块链实现对电子文件的原始性验证,也避免了通过保留电子文件来验证其原始性,相应地节省了存储空间。

本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟是以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的几个实施例中,应该理解到,本申请各个实施例中的各功能模块可以集成在一个处理器中,也可以是单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。

其中,集成的模块可以采用硬件的形式实现时,文件管理的装置可以包括处理器。上述模块对应的实体的硬件可以为处理器。处理器,可以是一个中央处理模块(centralprocessingunit,cpu),或者为数字处理模块等等。文件管理的装置还可以包括通信借口,处理器通过通信接口与其它节点进行通信。该文件管理的装置还包括:存储器,用于存储处理器执行的程序。存储器还可以是非易失性存储器,比如硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)等,还可以是易失性存储器(volatilememory),例如随机存取存储器(random-accessmemory,ram)。存储器是能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。

处理器用于执行存储器存储的程序代码,具体用于执行本申请实施例中的文件管理的方法。本申请不再赘述。

本申请实施例中不限定上述通信接口、处理器以及存储器之间的具体连接介质。本申请实施例在图3中以处理器300、存储器302以及通信接口304之间通过总线连接。总线在图3中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图3中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

本发明实施例还提供了一种计算机可读存储介质,用于存储为执行上述处理器所需执行的计算机软件指令,其包含用于执行上述处理器所需执行的程序。

本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、或计算机程序产品。因为,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请的方法、装置、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中国年的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理器或其他可编程数据处理设备的处理器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的产品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个方框中指定的功能的步骤。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1