CN111984612A - 一种共享文件的方法、装置和系统 - Google Patents
一种共享文件的方法、装置和系统 Download PDFInfo
- Publication number
- CN111984612A CN111984612A CN202010772425.XA CN202010772425A CN111984612A CN 111984612 A CN111984612 A CN 111984612A CN 202010772425 A CN202010772425 A CN 202010772425A CN 111984612 A CN111984612 A CN 111984612A
- Authority
- CN
- China
- Prior art keywords
- hash value
- file
- current
- file compression
- block chain
- 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
- 238000000034 method Methods 0.000 title claims abstract description 100
- 230000006835 compression Effects 0.000 claims abstract description 223
- 238000007906 compression Methods 0.000 claims abstract description 222
- 230000011218 segmentation Effects 0.000 claims description 14
- 238000004590 computer program Methods 0.000 claims description 11
- 230000006837 decompression Effects 0.000 claims description 8
- 239000000126 substance Substances 0.000 claims description 5
- 230000008569 process Effects 0.000 description 13
- 238000010586 diagram Methods 0.000 description 11
- 238000004891 communication Methods 0.000 description 6
- 230000006870 function Effects 0.000 description 6
- 230000003287 optical effect Effects 0.000 description 4
- 230000004048 modification Effects 0.000 description 3
- 238000012986 modification Methods 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 238000013467 fragmentation Methods 0.000 description 2
- 238000006062 fragmentation reaction Methods 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000018109 developmental process Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 230000009467 reduction Effects 0.000 description 1
- 238000012163 sequencing technique Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 230000002123 temporal effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/176—Support for shared access to files; File sharing support
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/16—File or folder operations, e.g. details of user interfaces specifically adapted to file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/174—Redundancy elimination performed by the file system
- G06F16/1744—Redundancy elimination performed by the file system using compression, e.g. sparse files
Abstract
本发明公开了一种共享文件的方法、装置和系统,涉及计算机技术领域。该方法的一具体实施方式包括:获取待共享的文件,对设定周期内文件压缩包执行区块链上链操作并对其相应的哈希值进行动态分组,对每个分组的哈希值执行区块链上链操作并获取当前哈希值;循环直到获取根哈希值,各个层级哈希值形成动态可变叶子数量的分叉树结构。基于根哈希值,遍历分叉树结构中的哈希值,获取文件压缩包中的共享文件;通过采用将多个文件形成文件压缩包,部分克服了因为文件数量大造成的网络资源负担过高的技术问题,通过将各个文件压缩包并发上链,提高了文件上链和共享的效率;利用树状结构存储并分享根哈希值,通过根哈希值获取共享文件,提高文件的安全性。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种共享文件的方法、装置和系统。
背景技术
在企业的业务流程中,往往需要共享业务所需要的文件,尤其是涉及到企业与企业之间的业务,随着区块链技术的发展,企业之间可以基于区块链共享文件,所采用的方法主要有:1.将所有的共享文件当作交易上链并进行广播实现共享,2.将文件保存在中心化数据库中,将文件的电子存证上链并进行广播实现共享。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
利用方法1的方法,当文件的数量较大时,造成网络资源的使用率过高从而导致文件上链的效率减低;方法2,利用中心化的数据库保存文件,当文件为安全性较高的文件时,会存在一定的安全风险。
发明内容
有鉴于此,本发明实施例提供一种共享文件的方法和装置,获取待共享的文件,对设定周期内文件压缩包执行区块链上链操作并对文件压缩包哈希值并进行动态分组,对每个分组的第一哈希值执行区块链上链操作并获取当前哈希值;循环直到获取根哈希值,各个层级哈希值形成动态可变叶子数量的分叉树结构。基于根哈希值,遍历分叉树结构中的哈希值,获取文件压缩包中的共享文件;通过采用将多个文件压缩成文件压缩包,部分克服了因为文件数量大造成的网络资源负担过高的技术问题,通过将各个文件压缩包并发上链,提高了文件上链和共享的效率;利用分叉树结构存储并分享根哈希值,通过根哈希值获取共享文件,提高文件的安全性。为实现上述目的,根据本发明实施例的第一方面,提供了一种共享文件的方法,其特征在于,包括:获取设定周期内待共享的文件,形成多个文件压缩包;对所述多个文件压缩包进行分组,得到至少两组文件压缩包;对每一组所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值;对基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值;将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值;将所述第二哈希值作为所述当前哈希值;所述预定义数量为大于1的整数;将所述当前哈希值作为根哈希值,并发送所述当前哈希值。
可选地,所述共享文件的方法,其特征在于,
对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:将设定分段周期内形成的多个所述文件压缩包作为一组文件压缩包,得到至少两组文件压缩包,所述设定周期包含至少两个设定分段周期。
可选地,所述共享文件的方法,其特征在于,
对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:根据设定文件数量对所述多个文件压缩包进行分组,得到至少两组文件压缩包。
可选地,所述共享文件的方法,其特征在于,
获取设定周期内待共享的文件,形成多个文件压缩包,包括:
获取设定周期内待共享的文件,形成多个文件包,根据网络带宽,确定所述文件包中文件的数量。
可选地,所述共享文件的方法,其特征在于,
分别对每一组所述文件包执行压缩和加密操作,形成所述文件压缩包。
可选地,所述共享文件的方法,其特征在于,
对每一组包含的所述文件压缩包执行区块链并发上链操作。
为实现上述目的,根据本发明实施例的第二方面,提供了一种共享文件的方法,其特征在于,包括:接收当前哈希值;循环执行以下步骤,直至获取到所述当前哈希值所对应的文件压缩包;确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值,如果是,执行A1;否则执行A2;A1:从所述区块链上获取所述当前哈希值所对应的文件压缩包;A2:确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值。
可选地,所述共享文件的方法,其特征在于,
获取到所述当前哈希值所对应的文件压缩包,包括:
获取所述当前哈希值所对应的文件压缩包,对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。
为实现上述目的,根据本发明实施例的第三方面,提供了一种共享文件的装置,其特征在于,包括:文件压缩包上链模块、当前哈希值获取模块和根哈希值获取模块;其中,
所述文件压缩包上链模块,用于获取设定周期内待共享的文件,形成多个文件压缩包;对所述多个文件压缩包进行分组,得到至少两组文件压缩包;对每一组所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值;
所述当前哈希值获取模块,用于基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值;将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值;将所述第二哈希值作为所述当前哈希值;所述预定义数量为大于1的整数;
所述根哈希值获取模块,用于将所述当前哈希值作为根哈希值,并发送所述当前哈希值。
可选地,所述共享文件的装置,其特征在于,
对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:将设定分段周期内形成的多个所述文件压缩包作为一组文件压缩包,得到至少两组文件压缩包,所述设定周期包含至少两个设定分段周期。
可选地,所述共享文件的装置,其特征在于,
对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:根据设定文件数量对所述多个文件压缩包进行分组,得到至少两组文件压缩包。
可选地,所述共享文件的装置,其特征在于,
获取设定周期内待共享的文件,形成多个文件压缩包,包括:
获取设定周期内待共享的文件,形成多个文件包,根据网络带宽,确定所述文件包中文件的数量。
可选地,所述共享文件的装置,其特征在于,
分别对每一组所述文件包执行压缩和加密操作,形成所述文件压缩包。
可选地,所述共享文件的装置,其特征在于,
对每一组包含的所述文件压缩包执行区块链并发上链操作。
为实现上述目的,根据本发明实施例的第四方面,还提供了一种共享文件的装置,其特征在于,包括:获取链上文件模块;其中,
所述获取链上文件模块,用于接收当前哈希值;循环执行以下步骤,直至获取到所述当前哈希值所对应的文件压缩包;
确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值,如果是,执行A1;否则执行A2;
A1:从所述区块链上获取所述当前哈希值所对应的文件压缩包;
A2:确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值。
可选地,所述共享文件的装置,其特征在于,
获取到所述当前哈希值所对应的文件压缩包,包括:
获取所述当前哈希值所对应的文件压缩包,对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。
为实现上述目的,根据本发明实施例的第五方面,提供了一种共享文件的系统800,包含上述第三方面提供的共享文件的装置600、以及上述第四方面提供的共享文件的装置700;
为实现上述目的,根据本发明实施例的第六方面,提供了一种共享文件的电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述共享文件的方法中任一所述的方法。
为实现上述目的,根据本发明实施例的第七方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上述共享文件的方法中任一所述的方法。
上述发明中的一个实施例具有如下优点或有益效果:获取待共享的文件,对设定周期内文件压缩包执行区块链上链操作并对从区块链获取的第一哈希值并进行分组,根据每个分组的第一哈希值执行区块链上链操作并获取当前哈希值;循环直到获取根哈希值,各个层级哈希值形成分叉树结构。基于根哈希值,遍历分叉树结构中的哈希值,获取文件压缩包中的共享文件;通过采用将多个文件压缩成文件压缩包,部分克服了因为文件数量大造成的网络资源负担过高的技术问题,通过将各个文件压缩包并发上链,提高了文件上链和共享的效率;利用分叉树结构存储并分享根哈希值,通过根哈希值获取共享文件,提高文件的安全性。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是本发明一个实施例提供的一种存储共享文件的方法的流程示意图;
图2是本发明一个实施例提供的一种获取共享文件的流程示意图;
图3是本发明一个实施例提供的一种利用预定义时间范围和多叉树结构存储共享文件哈希值示意图;
图4是本发明一个实施例提供的一种获取共享文件的流程示意图;
图5是本发明一个实施例提供的一种共享文件的流程示意图;
图6是本发明一个实施例提供的一种共享文件的装置的结构示意图;
图7是本发明一个实施例提供的一种获取共享文件的装置的结构示意图;
图8是本发明一个实施例提供的一种获取共享文件的系统的结构示意图;
图9是本发明实施例可以应用于其中的示例性系统架构图;
图10是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
如图1所示,本发明实施例提供了一种存储共享文件的方法,该方法可以包括以下步骤:
步骤S101:获取设定周期内待共享的文件,形成多个文件压缩包;对所述多个文件压缩包进行分组,得到至少两组文件压缩包;对每一组所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值。
具体地,待共享的文件可以为某电子银行产生的交易文件、电子银行产生的对账单文件、电子商城产生的订单文件等;本发明对带共享的文件的格式和内容不做限定;获取设定周期内待共享的文件,所述待共享文件为在设定周期内产生的,例如,一个小时之内某电子银行产生的交易文件、一个小时之内某两个电子银行产生的对账单文件、一天之内电子商城产生的订单文件等,所述设定周期可以根据业务的场景和产生文件的数量来设定,例如,一天、一小时、30分钟等;本发明对设定周期的具体内容不做限定。
进一步地,获取设定周期内待共享的文件,形成多个文件压缩包,包括:获取设定周期内待共享的文件,形成多个文件包,根据网络带宽,确定所述文件包中文件的数量。进一步地,获取预定义时间范围内待共享的文件,根据所述文件的数量和尺寸,形成多个文件压缩包,还包括在执行压缩操作以及加密操作,通过加密提高了文件的安全性,尤其是提高了对安全性要求高的例如电子银行之间的对账单等文件的安全性;即,分别对所述文件包执行压缩和加密操作,形成所述文件压缩包。加密的方法可以使用压缩软件进行加密,也可使用操作系统或加密软件进行加密,本发明对压缩、加密的具体方法不做限定。
再进一步地,对所述多个文件压缩包进行分组,得到至少两组文件压缩包;具体地,分组有两种方法:
第一种方法:将设定分段周期内形成的多个所述文件压缩包作为一组文件压缩包,得到至少两组文件压缩包,所述设定周期包含至少两个设定分段周期。具体地,设定周期包含至少两个所述设定分段周期,例如,设定分段周期为5分钟,设定周期为30分钟,可知设定周期包含了6个设定分段周期;进一步地,将一个5分钟内形成的多个所述文件压缩包作为一组文件压缩包;将另一个5分钟内形成的多个所述文件压缩包作为另一组文件压缩包;可以理解的是,各个设定分段周期之间有时间上的先后顺序;即,将至少两个设定分段周期内分别形成的多个所述文件压缩包作为一组文件压缩包,得到至少两组文件压缩包。所述设定周期包含至少两个设定分段周期;可以理解的是,该方法为动态形成文件压缩包;因此每一组文件压缩包的数量为可变的,增加了文件共享的灵活性。
第二种方法:根据设定文件数量对所述多个文件压缩包进行分组,得到至少两组文件压缩包。具体地,设定文件数量为根据待共享文件的总量和场景来定义的,例如,设定文件数量为1000个,则每1000个文件压缩包形成一组,例如,设定周期为30分钟,在30分钟内形成了10000个文件压缩包,根据设定文件数量1000,则分成10组文件压缩包;即,根据设定文件数量对所述多个文件压缩包进行分组,得到至少两组文件压缩包。
进一步地,对每一组所述文件压缩包执行区块链上链操作,其中,可以分别将文件压缩包作为交易执行区块链上链操作,并分别从区块链获取针对该交易返回的哈希值,该哈希值即为所述文件压缩包对应的第一哈希值;例如,利用上述分组的第一种方法或者第二种方法,一共分成了10组文件压缩包,则对每一组内的各个文件压缩包分别执行区块链上链操作,并分别从区块链获取对应的第一哈希值,第一哈希值即为文件压缩包的哈希值,例如,分组1中包含1000个文件压缩包,则获取对应的1000个第一哈希值;进一步地,基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值;具体地,基于每一组包含的所述第一哈希值生成中间哈希值可以每一组包含的第一哈希值进行组合生成中间哈希值,也可以通过对各个第一哈希值进行运算而生成中间哈希值,例如,基于分组1的1000个第一哈希值,经过计算生成一个中间哈希值,将该中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;本发明对基于每一组包含的所述第一哈希值生成中间哈希值的具体方法不做限定。进一步地,可以分别将每一组包含的第一哈希值生成的中间哈希值作为交易执行区块链上链操作,并分别从区块链获取针对该交易返回的第二哈希值;本发明对设定周期、设定分段周期、设定文件数量的数值不做限定。
进一步地,对每一组所述文件压缩包执行区块链上链操作,还包括:对每一组包含的所述文件压缩包执行区块链并发上链操作。因为每一组包含的各个文件压缩包之间不具有依赖交易关系,执行文件压缩包的并发上链操作;可以理解的是,由于存在网络的带宽等资源的限制,多个文件压缩包的上链操作可以是分批进行的,每一批内文件压缩包执行并发上链,通过并发上链的操作,提高了文件上链的效率;其中,所使用的区块链可以是联盟链、私有链等,本发明对区块链的类型不做限定。本发明对执行区块链上链操作所使用的具体工具或者方法不做限定。
步骤S102:将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值;将所述第二哈希值作为所述当前哈希值;所述预定义数量为大于1的整数。
具体地,根据步骤S101所描述的分组的第一种方法或者第二种方法,一共分成了10组文件压缩包,则对每一组内的各个文件压缩包分别获取对应的第一哈希值;第一哈希值即为文件压缩包的哈希值。基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值;其中,可以分别将每一组包含的第一哈希值作为交易执行区块链上链操作,并分别从区块链获取针对该交易返回的第二哈希值;例如,根据10组中每一组的第一哈希值,例如分组1中包含1000个文件压缩包,则对应1000个第一哈希值,基于这1000个第一哈希值生成一个中间哈希值,并对所述中间哈希值执行区块链上链操作,并从区块链获取对应的一个第二哈希值,类似地,根据每一组的第一哈希值分别获取10个第二哈希值。
进一步地,将所述第二哈希值作为当前哈希值,循环执行以下操作;直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;其中,基于选择出的预定义数量个当前哈希值生成中间哈希值,可以通过将选择出的预定义数量个当前哈希值进行组合生成中间哈希值,也可以通过对选择出的预定义数量个当前哈希值进行运算而生成中间哈希值,将该中间哈希值作为交易执行区块链上链操作,并从区块链获取对应的第二哈希值;本发明对选择出的预定义数量个当前哈希值生成中间哈希值的具体方法不做限定。
进一步地,当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;将所述第二哈希值作为所述当前哈希值。其中,预定义数量为大于1的整数,例如,2、3、4、10、100、1000,预定义数量用于第二哈希值形成的树状结构的分叉数量,预定义数量可以根据业务的场景或者文件压缩包的数量而确定本发明对预定义数量的具体数值不做限定。
在循环过程中,第二哈希值作为当前哈希值;可以理解的是,根据上述描述,经过循环获取每个层级的哈希值,直到获取唯一的根哈希值(即,直至所述当前哈希值的数量为1),形成一个树状哈希值存储结构。通过上述方法,提高了获取文件的复杂度,从而提高了文件的安全性。
下面举例说明上述过程,例如:对99组文件压缩包,对应获取到99个第二哈希值;并设置预定义数量为5;则将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:即,将99个第二哈希值作为当前哈希值循环执行以下操作:
从99个第二哈希值(当前哈希值)中,分别选择预定义数量个(例如5个)当前哈希值,并根据选择出的预定义数量个所述当前哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;可以理解的是,将99个第二哈希值,分别选择预定义数量(5个)当前哈希值,并对选择的5个哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值,通过上述操作,获取到19个第二哈希值。
进一步地,99个当前哈希值中的95(19*5)对应于19个第二哈希值,还有4个当前哈希值未被选择,且未被选择过的所述当前哈希值的数量小于所述预定义数量(5个)时,则基于这4个当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的一个第二哈希值;即,当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值。
上述示例步骤描述了基于99个当前哈希值获取到20个第二哈希值,并将这20个第二哈希值作为当前哈希值,循环执行上述步骤,类似地,可知,20个当前哈希值中,分别选择5个(预定义数量)执行区块链上链操作,并从区块链获取对应下一层级的第二哈希值,可知获取了4个第二哈希值(当前哈希值);进一步地,获取到1个第二哈希值,即,直至所述当前哈希值的数量为1;循环操作停止;根据上述描述,经过循环上链操作以及获取哈希值,直到获取唯一的根哈希值,形成一个多叉树的哈希值存储结构。通过上述方法,提高了获取文件的复杂度,从而提高了文件的安全性。
步骤S103:将所述当前哈希值作为根哈希值,并发送所述当前哈希值。
具体地,根据步骤S102描述的多叉树的存储结构,经过循环,获取根哈希值并发送所述根哈希值。
发送所述根哈希值有两种方法:1)通过区块链发送所述根哈希值给有获取共享文件权限的获取方;2)通过其他方式发送所述根哈希值给有获取共享文件权限的获取方,例如:官方电子邮件等;可以理解的是,将所述根哈希值发送给有获取共享文件权限的获取方,所述有权限的获取方可以是一方或者多方;例如:所述文件为银行A和银行B在预定义时间范围内产生的对账单;在步骤S101-步骤S103之后产生了根哈希值,则将所述根哈希值发送给对这些对账单文件有获取权限的银行A和银行B;显而易见地是,利用该操作进一步提高了文件的安全性。关于步骤S101-S103的流程的进一步地示例如图3所示。
如图2所示,本发明实施例提供了一种获取共享文件的方法,该方法可以包括以下步骤:
步骤S201:接收当前哈希值;循环执行以下步骤,直至获取到所述当前哈希值所对应的文件压缩包;确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值,如果是,执行A1;否则执行A2;A1:从所述区块链上获取所述当前哈希值所对应的文件压缩包;A2:确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值具体地,根据所述根哈希值,从区块链上获取所述文件压缩包哈希值对应的文件压缩包中文件的方法的描述与步骤S401-步骤S403所描述的示例一致,在此不再赘述。
如图3所示,本发明实施例提供了一种利用多叉树结构存储共享文件哈希值的方法,该方法可以包括以下步骤:
步骤S301:对分组1的所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的n个第一哈希值。
如图3所示示例,分组1包含文件压缩包1-文件压缩包n;可以理解的是,如步骤S102所描述的两种分组方法,文件压缩包1-文件压缩包n可以是设定分段周期内形成的各个文件压缩包;也可以是设定文件数量个文件压缩包,n即是设定文件数量;进一步地,对分组1中的每一个文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值;例如,对文件压缩包1执行区块链上链操作,并从区块链获取对应的第一哈希值,其中,可以将文件压缩包1作为交易执行区块链上链操作,并从区块链获取针对该交易的第一哈希值,例如:第一哈希值1;以此类推,对文件压缩包n执行区块链上链操作,并从区块链获取对应的第一哈希值n;可以理解的是,文件压缩包的数量n可以是数十、数百、数万、数十万、数百万、数千万等;即,对每一组所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值。
步骤S302:对分组1包含的所述第一哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值1;如步骤S301所描述,根据在分组1中的n个文件压缩包,获取了n个文件压缩包对应的第一哈希值,即第一哈希值1-第一哈希值n;进一步地,基于这n个第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值(第二哈希值1);所述第二哈希值的数量为1;也即,根据一个分组的各个第一哈希值获取一个第二哈希值;即,基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值。
步骤S303:对分组2的所述文件压缩包执行区块链上链操作,并从区块链获取分组2包含的所述文件压缩包对应的m个第一哈希值。
步骤S304:基于分组2包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值2;
步骤S303-步骤S304的描述与步骤S301-步骤S302的类似;可以理解的是,如步骤S102所描述的两种分组方法,文件压缩包1-文件压缩包m可以是设定分段周期内形成的各个文件压缩包;也可以是设定文件数量个文件压缩包,则m即是设定文件数量。
进一步地,当利用设定分段周期的分组方法时,m与步骤S301-步骤S302中的n可以是不同的数值;当利用设定文件数量的分组方法时,m与步骤S301-步骤S302中的n是相同的数值;都等于设定文件数量。
步骤S305:对分组3的所述文件压缩包执行区块链上链操作,并并从区块链获取分组3包含的所述文件压缩包对应的a个第一哈希值。
步骤S306:基于分组3包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值3。
步骤S305-步骤S306的描述与步骤S303-步骤S304的描述类似;在此不再赘述。
步骤S307:获取当前哈希值。
具体地,将步骤S301-步骤S306所获取的第二哈希值1、第二哈希值2、第二哈希值3作为当前哈希值;选择预定义数量(例如:2)个当前哈希值,并对选择出的预定义数量个所述当前哈希值(例如:层级1的第二哈希值1和第二哈希值2)执行区块链上链操作,并从区块链获取对应的第二哈希值(例如:层级2的第二哈希值1);进一步地,当存在未被选择过的所述当前哈希值(第二哈希值3)、且未被选择过的所述当前哈希值的数量小于所述预定义数量时(1<2),基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值(例如:层级2第二哈希值2)。
即,将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值;将所述第二哈希值作为所述当前哈希值;所述预定义数量为大于1的整数。
步骤S308:将当前哈希值作为根哈希值。
具体地,将所述当前哈希值作为根哈希值,并发送所述当前哈希值。经过步骤S307的操作,直至所述当前哈希值(层级3的根哈希值)的数量为1,则将所述当前哈希值作为根哈希值,并发送所述当前哈希值。
如图4所示,本发明实施例提供了一种基于多叉树结构的哈希值获取共享文件的方法,该方法可以包括以下步骤:
以下步骤S401-步骤S403以步骤S301-步骤S303所描述的示例为例说明基于多叉树结构的哈希值获取共享文件的方法;
步骤S401:根据当前哈希值(根哈希值)。
具体地,接收当前哈希值;确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值。
如图4所示,确定所述区块链上不存在与所述当前哈希值相同的文件压缩包哈希值,即所述当前哈希值不是文件压缩包的哈希值,则确定所述当前哈希值对应的预定义数量个下级哈希值,并将所述下级哈希值作为所述当前哈希值;当前哈希值的下级哈希值分别为下级哈希值1、下级哈希值2、下级哈希值3;并将所述下级哈希值作为所述当前哈希值。
步骤S402:循环执行获取下级哈希值操作;
下面描述根哈希值以下的各层哈希值遍历并获取文件压缩包过程的示例;具体地,如图4所示,接收当前哈希值(下级哈希值1、下级哈希值2);确定所述区块链上不存在与所述当前哈希值(下级哈希值1)相同的文件压缩包哈希值;则确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值,例如:确定下级哈希值1(层级2)对应的各个子哈希值为下级哈希值1-下级哈希值2(层级3);进一步地,确定所述区块链上存在与所述当前哈希值(下级哈希值2)相同的文件压缩包哈希值(下级哈希值1-下级哈希值a);则从所述区块链上获取所述当前哈希值所对应的文件压缩包;分别为文件压缩包1-文件压缩包a;进一步地,针对层级3的下级哈希值1、下级哈希值2循环执行上述步骤,并从所述区块链上获取所述当前哈希值所对应的文件压缩包;即,接收当前哈希值;循环执行以下步骤,直至获取到所述当前哈希值所对应的文件压缩包;确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值,如果是,执行A1;否则执行A2;A1:从所述区块链上获取所述当前哈希值所对应的文件压缩包;A2:确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值。
步骤S404:根据文件压缩包的第一哈希值,获取文件压缩包以及文件压缩包中的文件。具体地,获取到所述当前哈希值所对应的文件压缩包,包括:获取所述当前哈希值所对应的文件压缩包,对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件;具体地对每个获取到的文件压缩包,执行解压和解密操作,解压和解密的方法与压缩和加密的方法相互对应。
如图5所示,本发明实施例提供了一种共享文件的流程,该流程包括以下步骤:
如图5所示的示意流程,利用步骤S501-步骤S503描述共享文件上链的过程;利用步骤S504描述共享文件获取方获取共享文件的过程;例如,执行共享文件上链的可以是银行总部,共享文件获取方可以是在业务上与共享文件直接相关的企业,例如:银行1、银行2、银行3等。
步骤S501:获取设定周期内待共享的文件,形成多个文件压缩包;对所述多个文件压缩包进行分组,得到至少两组文件压缩包;对每一组所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值。
具体地,关于文件压缩包的形成以及上链的描述与步骤S101一致,在此不再赘述;进一步地,对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:将设定分段周期内形成的多个所述文件压缩包作为一组文件压缩包,得到至少两组文件压缩包,所述设定周期包含至少两个设定分段周期。所述对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:根据设定文件数量对所述多个文件压缩包进行分组,得到至少两组文件压缩包。
再进一步地,获取设定周期内待共享的文件,形成多个文件压缩包,包括:获取设定周期内待共享的文件,形成多个文件包,根据网络带宽,确定所述文件包中文件的数量。再进一步地,分别对每一组所述文件包执行压缩和加密操作,形成所述文件压缩包。对每一组包含的所述文件压缩包执行区块链并发上链操作。
步骤S502:基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值。将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值;将所述第二哈希值作为所述当前哈希值;所述预定义数量为大于1的整数。
具体地,关于获取第二哈希值(当前哈希值)的描述与步骤S102一致,在此不再赘述。
步骤S503:将所述当前哈希值作为根哈希值,并发送所述当前哈希值。
具体地,关于发送根哈希值的描述步骤S103一致,在此不再赘述。
步骤S504:接收当前哈希值;循环执行以下步骤,直至获取到所述当前哈希值所对应的文件压缩包;确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值,如果是,执行A1;否则执行A2;A1:从所述区块链上获取所述当前哈希值所对应的文件压缩包;A2:确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值。
具体地,关于获取根哈希值以及各级哈希值上链的描述与步骤S201的描述一致,在此不再赘述;进一步地,获取到所述当前哈希值所对应的文件压缩包,包括:获取所述当前哈希值所对应的文件压缩包,对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。
如图6所示,本发明实施例提供了一种共享文件的装置600,包括:文件压缩包上链模块601、当前哈希值获取模块602和根哈希值获取模块603;其中,
所述文件压缩包上链模块601,用于获取设定周期内待共享的文件,形成多个文件压缩包;对所述多个文件压缩包进行分组,得到至少两组文件压缩包;对每一组所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值;
所述当前哈希值获取模块602,用于基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值;将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值;将所述第二哈希值作为所述当前哈希值;所述预定义数量为大于1的整数;
所述根哈希值获取模块603,用于将所述当前哈希值作为根哈希值,并发送所述当前哈希值。
可选地,文件压缩包上链模块601,还用于对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:将设定分段周期内形成的多个所述文件压缩包作为一组文件压缩包,得到至少两组文件压缩包,所述设定周期包含至少两个设定分段周期。
可选地,文件压缩包上链模块601,还用于所述对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:根据设定文件数量对所述多个文件压缩包进行分组,得到至少两组文件压缩包。
可选地,文件压缩包上链模块601,还用于获取设定周期内待共享的文件,形成多个文件压缩包,包括:获取设定周期内待共享的文件,形成多个文件包,根据网络带宽,确定所述文件包中文件的数量。
可选地,文件压缩包上链模块601,还用于分别对每一组所述文件包执行压缩和加密操作,形成所述文件压缩包。
可选地,文件压缩包上链模块601,还用于对每一组包含的所述文件压缩包执行区块链并发上链操作。
如图7所示,本发明实施例提供了一种共享文件的装置700,包括:获取链上文件模块701;
其中,所述获取链上文件模块701,用于接收当前哈希值;循环执行以下步骤,直至获取到所述当前哈希值所对应的文件压缩包;确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值,如果是,执行A1;否则执行A2;A1:从所述区块链上获取所述当前哈希值所对应的文件压缩包;A2:确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值。
可选地,获取链上文件模块701,还用于获取到所述当前哈希值所对应的文件压缩包,包括:获取所述当前哈希值所对应的文件压缩包,对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。
本发明实施例还提供了一种共享文件的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例提供的方法。
本发明实施例还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例提供的方法。
图9示出了可以应用本发明实施例的共享文件的方法或共享文件的装置的示例性系统架构900。
如图9所示,系统架构900可以包括终端设备901、902、903,网络904和服务器905。网络904用以在终端设备901、902、903和服务器905之间提供通信链路的介质。网络904可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备901、902、903通过网络904与服务器905交互,以接收或发送消息等。终端设备901、902、903上可以安装有各种客户端应用,例如企业应用客户端、网页浏览器应用、搜索类应用、即时通信工具和邮箱客户端等。
终端设备901、902、903可以是具有显示屏并且支持运行各种客户端应用的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器905可以是提供各种服务的服务器,例如对用户利用终端设备901、902、903所提出的获取共享文件的请求提供支持的后台管理服务器。后台管理服务器可以将待共享文件执行上链和存储,针对提出的获取文件的请求进行处理,并将文件返回给终端设备。
需要说明的是,本发明实施例所提供的共享文件的方法一般由服务器905执行,相应地,共享文件的装置一般设置于服务器905中。
应该理解,图9中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图10,其示出了适于用来实现本发明实施例的终端设备的计算机系统1000的结构示意图。图10示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图10所示,计算机系统1000包括中央处理单元(CPU)1001,其可以根据存储在只读存储器(ROM)1002中的程序或者从存储部分1008加载到随机访问存储器(RAM)1003中的程序而执行各种适当的动作和处理。在RAM 1003中,还存储有系统1000操作所需的各种程序和数据。CPU 1001、ROM 1002以及RAM 1003通过总线1004彼此相连。输入/输出(I/O)接口1005也连接至总线1004。
以下部件连接至I/O接口1005:包括键盘、鼠标等的输入部分1006;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1007;包括硬盘等的存储部分1008;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1009。通信部分1009经由诸如因特网的网络执行通信处理。驱动器1010也根据需要连接至I/O接口1005。可拆卸介质1011,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1010上,以便于从其上读出的计算机程序根据需要被安装入存储部分1008。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1010从网络上被下载和安装,和/或从可拆卸介质1011被安装。在该计算机程序被中央处理单元(CPU)1001执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块和/或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块和/或单元也可以设置在处理器中,例如,可以描述为:一种处理器包括文件压缩包上链模块、当前哈希值获取模块和根哈希值获取模块;其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,当前哈希值获取模块还可以被描述为“对文件压缩包的第一哈希值执行区块链上链操作,并从区块链获取当前哈希值的模块”。还可以描述为:一种处理器包括获取链上文件模块;其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取链上文件模块还可以被描述为“根据根哈希值,获取区块链上的文件压缩包哈希值,根据文件压缩包哈希值获取文件压缩包所包含的文件的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取设定周期内待共享的文件,形成多个文件压缩包;对所述多个文件压缩包进行分组,得到至少两组文件压缩包;对每一组所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值;基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值;将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值;将所述第二哈希值作为所述当前哈希值;所述预定义数量为大于1的整数;将所述当前哈希值作为根哈希值,并发送所述当前哈希值。
接收当前哈希值;循环执行以下步骤,直至获取到所述当前哈希值所对应的文件压缩包;确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值,如果是,执行A1;否则执行A2;A1:从所述区块链上获取所述当前哈希值所对应的文件压缩包;A2:确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值。
根据本发明实施例的技术方案,通过采用将多个文件压缩成文件压缩包,部分克服了因为文件数量大造成的网络资源负担过高的技术问题,通过将各个文件压缩包并发上链,提高了文件上链和共享的效率;利用树状结构存储并分享根哈希值,通过根哈希值获取共享文件,提高文件的安全性。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (13)
1.一种共享文件的方法,其特征在于,包括:
获取设定周期内待共享的文件,形成多个文件压缩包;
对所述多个文件压缩包进行分组,得到至少两组文件压缩包;对每一组所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值;
基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值;将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值;将所述第二哈希值作为所述当前哈希值;所述预定义数量为大于1的整数;
将所述当前哈希值作为根哈希值,并发送所述当前哈希值。
2.根据权利要求1所述的方法,其特征在于,
对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:
将设定分段周期内形成的多个所述文件压缩包作为一组文件压缩包,得到至少两组文件压缩包,所述设定周期包含至少两个设定分段周期。
3.根据权利要求1所述的方法,其特征在于,
对所述多个文件压缩包进行分组,得到至少两组文件压缩包;包括:
根据设定文件数量对所述多个文件压缩包进行分组,得到至少两组文件压缩包。
4.根据权利要求1所述的方法,其特征在于,
获取设定周期内待共享的文件,形成多个文件压缩包,包括:
获取设定周期内待共享的文件,形成多个文件包,根据网络带宽,确定所述文件包中文件的数量。
5.根据权利要求4所述的方法,其特征在于,
分别对每一组所述文件包执行压缩和加密操作,形成所述文件压缩包。
6.根据权利要求1所述的方法,其特征在于,
对每一组包含的所述文件压缩包执行区块链并发上链操作。
7.一种共享文件的方法,其特征在于,包括:
接收当前哈希值;循环执行以下步骤,直至获取到所述当前哈希值所对应的文件压缩包;
确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值,如果是,执行A1;否则执行A2;
A1:从所述区块链上获取所述当前哈希值所对应的文件压缩包;
A2:确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值。
8.根据权利要求7所述的方法,其特征在于,
获取到所述当前哈希值所对应的文件压缩包,包括:
获取所述当前哈希值所对应的文件压缩包,对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。
9.一种共享文件的装置,其特征在于,包括:文件压缩包上链模块、当前哈希值获取模块和根哈希值获取模块;其中,
所述文件压缩包上链模块,用于获取设定周期内待共享的文件,形成多个文件压缩包;对所述多个文件压缩包进行分组,得到至少两组文件压缩包;对每一组所述文件压缩包执行区块链上链操作,并从区块链获取每一组包含的所述文件压缩包对应的第一哈希值;
所述当前哈希值获取模块,用于基于每一组包含的所述第一哈希值生成中间哈希值,分别对所述中间哈希值执行区块链上链操作,并分别从区块链获取对应的第二哈希值;将所述第二哈希值作为当前哈希值,循环执行以下操作,直至所述当前哈希值的数量为1:从所述至少两个当前哈希值中,选择预定义数量个当前哈希值,基于选择出的预定义数量个所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的第二哈希值;当存在未被选择过的所述当前哈希值、且未被选择过的所述当前哈希值的数量小于所述预定义数量时,基于未被选择过的所述当前哈希值生成中间哈希值,对所述中间哈希值执行区块链上链操作,并从区块链获取对应的成第二哈希值;将所述第二哈希值作为所述当前哈希值;所述预定义数量为大于1的整数;
所述根哈希值获取模块,用于将所述当前哈希值作为根哈希值,并发送所述当前哈希值。
10.一种共享文件的装置,其特征在于,包括:获取链上文件模块;其中,
所述获取链上文件模块,用于接收当前哈希值;循环执行以下步骤,直至获取到所述当前哈希值所对应的文件压缩包;
确定所述区块链上存在与所述当前哈希值相同的文件压缩包哈希值,如果是,执行A1;否则执行A2;
A1:从所述区块链上获取所述当前哈希值所对应的文件压缩包;
A2:确定所述当前哈希值对应的各个下级哈希值,并将所述下级哈希值作为所述当前哈希值。
11.一种共享文件的系统,其特征在于,包括:权利要求9所述的共享文件的装置、以及权利要求10所述的共享文件的装置。
12.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6或者7-8中任一所述的方法。
13.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6或者7-8中任一所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010772425.XA CN111984612B (zh) | 2020-08-04 | 2020-08-04 | 一种共享文件的方法、装置和系统 |
PCT/CN2021/110599 WO2022028486A1 (zh) | 2020-08-04 | 2021-08-04 | 共享文件的方法、装置和系统 |
EP21852328.0A EP4180984A1 (en) | 2020-08-04 | 2021-08-04 | File sharing method, device, and system |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010772425.XA CN111984612B (zh) | 2020-08-04 | 2020-08-04 | 一种共享文件的方法、装置和系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984612A true CN111984612A (zh) | 2020-11-24 |
CN111984612B CN111984612B (zh) | 2024-03-22 |
Family
ID=73444966
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010772425.XA Active CN111984612B (zh) | 2020-08-04 | 2020-08-04 | 一种共享文件的方法、装置和系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984612B (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022028486A1 (zh) * | 2020-08-04 | 2022-02-10 | 中国人民银行数字货币研究所 | 共享文件的方法、装置和系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107423426A (zh) * | 2017-08-02 | 2017-12-01 | 众安信息技术服务有限公司 | 一种区块链块数据的数据归档方法及电子设备 |
KR101868029B1 (ko) * | 2017-03-10 | 2018-06-18 | 현대카드 주식회사 | 블록체인 기반의 파일 공유 방법 및 시스템 |
CN109711839A (zh) * | 2018-12-13 | 2019-05-03 | 平安科技(深圳)有限公司 | 基于数据压缩的区块链存储方法、装置、设备和存储介质 |
CN109992563A (zh) * | 2019-01-18 | 2019-07-09 | 阿里巴巴集团控股有限公司 | 一种基于区块链的业务文件存储方法及装置 |
CN110611657A (zh) * | 2019-08-16 | 2019-12-24 | 中国人民银行数字货币研究所 | 一种基于区块链的文件流处理的方法、装置及系统 |
-
2020
- 2020-08-04 CN CN202010772425.XA patent/CN111984612B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101868029B1 (ko) * | 2017-03-10 | 2018-06-18 | 현대카드 주식회사 | 블록체인 기반의 파일 공유 방법 및 시스템 |
CN107423426A (zh) * | 2017-08-02 | 2017-12-01 | 众安信息技术服务有限公司 | 一种区块链块数据的数据归档方法及电子设备 |
CN109711839A (zh) * | 2018-12-13 | 2019-05-03 | 平安科技(深圳)有限公司 | 基于数据压缩的区块链存储方法、装置、设备和存储介质 |
CN109992563A (zh) * | 2019-01-18 | 2019-07-09 | 阿里巴巴集团控股有限公司 | 一种基于区块链的业务文件存储方法及装置 |
CN110611657A (zh) * | 2019-08-16 | 2019-12-24 | 中国人民银行数字货币研究所 | 一种基于区块链的文件流处理的方法、装置及系统 |
Non-Patent Citations (1)
Title |
---|
姚浩男;卢清华;张卫山;刘越;: "基于区块链的数据管理设计模式", 计算机系统应用, no. 07, pages 12 - 23 * |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2022028486A1 (zh) * | 2020-08-04 | 2022-02-10 | 中国人民银行数字货币研究所 | 共享文件的方法、装置和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN111984612B (zh) | 2024-03-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109146490B (zh) | 区块生成方法、装置和系统 | |
CN110516462B (zh) | 用于加密数据的方法和装置 | |
CN107292197B (zh) | 数据加密方法、解密方法、加密装置和解密装置 | |
CN111612388A (zh) | 合并目标订单的方法和装置 | |
CN110572422A (zh) | 数据下载方法和装置 | |
EP4180985A1 (en) | File sharing method, apparatus, and system | |
CN111629063A (zh) | 基于区块链的分布式文件下载的方法和电子设备 | |
CN114781351B (zh) | 基于电力数据的投标文件解析方法、装置、设备和介质 | |
CN111931474A (zh) | 信息表生成方法、装置、电子设备和计算机可读介质 | |
CN111950032A (zh) | 基于区块链的数据存储方法、终端设备和存储介质 | |
CN111181920A (zh) | 一种加解密的方法和装置 | |
CN111984612B (zh) | 一种共享文件的方法、装置和系统 | |
CN111984614B (zh) | 一种共享文件的方法、装置和系统 | |
CN111984613B (zh) | 一种共享文件的方法、装置和系统 | |
CN111984616B (zh) | 一种更新共享文件的方法、装置和系统 | |
CN115277684A (zh) | 文件传输方法、装置、设备以及存储介质 | |
CN112257039B (zh) | 身份属性添加方法、装置和电子设备 | |
CN111930331B (zh) | 信息显示方法、装置、电子设备和计算机可读介质 | |
CN108683608B (zh) | 分配流量的方法和装置 | |
CN114090247A (zh) | 用于处理数据的方法、装置、设备以及存储介质 | |
CN113485902A (zh) | 测试业务平台的方法、装置、设备和计算机可读介质 | |
CN115378878A (zh) | Cdn的调度方法、装置、设备及存储介质 | |
CN112181308A (zh) | 基于区块链的分布式数据存储方法和电子设备 | |
CN112346661A (zh) | 数据处理方法、装置和电子设备 | |
EP4180984A1 (en) | File sharing method, device, and system |
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 |