CN111984615A - 一种共享文件的方法、装置及系统 - Google Patents

一种共享文件的方法、装置及系统 Download PDF

Info

Publication number
CN111984615A
CN111984615A CN202010772463.5A CN202010772463A CN111984615A CN 111984615 A CN111984615 A CN 111984615A CN 202010772463 A CN202010772463 A CN 202010772463A CN 111984615 A CN111984615 A CN 111984615A
Authority
CN
China
Prior art keywords
file
hash value
data block
file compression
package
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.)
Pending
Application number
CN202010772463.5A
Other languages
English (en)
Inventor
穆长春
狄刚
钱友才
卿苏德
陈庆接
杜金钊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Currency Institute of the Peoples Bank of China
Original Assignee
Digital Currency Institute of the Peoples Bank of China
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Digital Currency Institute of the Peoples Bank of China filed Critical Digital Currency Institute of the Peoples Bank of China
Priority to CN202010772463.5A priority Critical patent/CN111984615A/zh
Publication of CN111984615A publication Critical patent/CN111984615A/zh
Priority to EP21854512.7A priority patent/EP4180985A1/en
Priority to PCT/CN2021/110594 priority patent/WO2022028484A1/zh
Priority to US18/040,619 priority patent/US20230315692A1/en
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • G06F16/1767Concurrency control, e.g. optimistic or pessimistic approaches
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/176Support for shared access to files; File sharing support
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/16File or folder operations, e.g. details of user interfaces specifically adapted to file systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/10File systems; File servers
    • G06F16/17Details of further file system functions
    • G06F16/174Redundancy elimination performed by the file system
    • G06F16/1744Redundancy elimination performed by the file system using compression, e.g. sparse files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/64Protecting data integrity, e.g. using checksums, certificates or signatures

Abstract

本发明公开了一种共享文件的方法、装置和系统,涉及计算机技术领域。该方法的一具体实施方式包括:获取待共享的文件,对共享文件压缩包执行区块链并发上链操作,根据压缩包文件名及其哈希值形成数据块,所述数据块包含前一个数据块的哈希值并将最后一个数据块的哈希值为根哈希值;根据根哈希值,获取最后一个数据块包含的文件,进而获取根哈希值指示的区块链中的各个文件压缩包;通过将多个文件压缩成文件包,部分克服了因为文件数量大造成的网络资源负担过高的技术问题,通过将各个文件压缩包并发上链,提高了文件上链和共享的效率;利用区块链上的单向链表数据结构保存和共享文件,提高了文件的安全性。

Description

一种共享文件的方法、装置及系统
技术领域
本发明涉及计算机技术领域,尤其涉及一种共享文件的方法、装置和系统。
背景技术
在企业的业务流程中,往往需要共享业务所需要的文件,尤其是涉及到企业与企业之间的业务,随着区块链技术的发展,企业之间可以基于区块链共享文件,所采用的方法主要有:1.将所有的共享文件当作交易上链并进行广播实现共享,2.将文件保存在中心化数据库中,将文件的电子存证上链并进行广播实现共享。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
利用方法1的方法,当文件的数量较大时,造成网络资源的使用率过高从而导致文件上链的效率减低;方法2,利用中心化的数据库保存文件,当文件为安全性较高的文件时,存在一定的安全风险。
发明内容
有鉴于此,本发明实施例提供一种共享文件的方法和装置,获取待共享的文件,对共享文件压缩包执行区块链并发上链操作,根据压缩包文件名及其哈希值形成数据块,所述数据块包含前一个数据块的哈希值;将最后一个数据块的哈希值为根哈希值;根据根哈希值,获取最后一个数据块包含的文件,进而获取根哈希值指示的区块链中的各个文件压缩包;通过将多个文件压缩成文件包,部分克服了因为文件数量大造成的网络资源负担过高的技术问题,通过将各个文件压缩包并发上链,提高了文件上链和共享的效率;利用区块链上的单向链表数据结构保存和共享文件,提高文件的安全性。
为实现上述目的,根据本发明实施例的第一方面,提供了一种共享文件的方法,其特征在于,包括:获取待共享的文件,形成至少两个文件压缩包;对所述文件压缩包执行区块链上链操作,并获取所述文件压缩包对应的哈希值;针对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作;针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块并对所述第二数据块执行区块链上链操作;将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。
可选地,所述共享文件的方法,其特征在于,
获取待共享的文件,形成至少两个文件压缩包,包括:
获取预定义时间范围内待共享的文件,形成至少两个文件包,根据网络带宽,确定所述文件包中文件的数量。
可选地,所述共享文件的方法,其特征在于,
获取待共享的文件,形成至少两个文件压缩包,包括:
分别对所述文件包执行压缩和加密操作,形成所述文件压缩包。
可选地,所述共享文件的方法,其特征在于,
所述第一数据块还包括初始数据块标识。
可选地,所述共享文件的方法,其特征在于,
对所述文件压缩包执行区块链并发上链操作。
可选地,所述共享文件的方法,其特征在于,
针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块,还包括:
根据所述第二文件压缩包的文件名,获取所述第二文件压缩包所包含的共享文件,对所述共享文件和所述前一个数据块的哈希值执行压缩和加密操作,形成更新文件压缩包,对所述更新文件压缩包执行区块链上链操作,并获取所述更新文件压缩包对应的哈希值,根据所述更新文件压缩包的文件名、所述更新文件压缩包的哈希值生成第二数据块。
为实现上述目的,根据本发明实施例的第二方面,提供了一种共享文件的方法,其特征在于,包括:
接收根哈希值,根据所述根哈希值从区块链上获取所述根哈希值对应的最后一个数据块,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件;
循环执行以下步骤,直至获取到所述根哈希值指示的区块链中的各个文件压缩包:将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值,并根据所述当前哈希值从区块链上获取前一个数据块的哈希值、所述当前数据块对应的文件压缩包的文件名和所述文件压缩包中的文件;并将获取的所述前一个数据块的哈希值作为所述当前哈希值。
可选地,所述共享文件的方法,其特征在于,
当所述当前数据块包含初始数据块标识时,指示为完成获取所述根哈希值指示的区块链中的各个文件压缩包。
可选地,所述共享文件的方法,其特征在于,
获取文件压缩包中的文件,包括:对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。
可选地,所述共享文件的方法,其特征在于,
当所述文件压缩包包含所述前一个数据块的哈希值时,对所述文件压缩包执行解压和解密操作,获取所述前一个数据块的哈希值。
为实现上述目的,根据本发明实施例的第三方面,提供了一种共享文件的装置,其特征在于,包括:文件压缩包上链模块、文件数据块生成模块和根哈希值生成模块;其中,
所述文件压缩包上链模块,用于获取待共享的文件,形成至少两个文件压缩包;对所述文件压缩包执行区块链上链操作,并获取所述文件压缩包对应的哈希值;
所述文件数据块生成模块,用于针对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作;针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块并对所述第二数据块执行区块链上链操作;
所述根哈希值生成模块,用于将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。
可选地,所述共享文件的装置,其特征在于,
获取待共享的文件,形成至少两个文件压缩包,包括:获取预定义时间范围内待共享的文件,形成至少两个文件包,根据网络带宽,确定所述文件包中文件的数量。
可选地,所述共享文件的装置,其特征在于,
获取待共享的文件,形成至少两个文件压缩包,包括:分别对所述文件包执行压缩和加密操作,形成所述文件压缩包。
可选地,所述共享文件的装置,其特征在于,
所述第一数据块还包括初始数据块标识。
可选地,所述共享文件的装置,其特征在于,
对所述文件压缩包执行区块链并发上链操作。
可选地,所述共享文件的装置,其特征在于,
针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块,还包括:
根据所述第二文件压缩包的文件名,获取所述第二文件压缩包所包含的共享文件,对所述共享文件和所述前一个数据块的哈希值执行压缩和加密操作,形成更新文件压缩包,对所述更新文件压缩包执行区块链上链操作,并获取所述更新文件压缩包对应的哈希值,根据所述更新文件压缩包的文件名、所述更新文件压缩包的哈希值生成第二数据块。
为实现上述目的,根据本发明实施例的第四方面,还提供了一种共享文件的装置,其特征在于,包括:获取根节点文件模块和获取链上文件模块;其中,
所述获取根节点文件模块,用于接收根哈希值,根据所述根哈希值从区块链上获取所述根哈希值对应的最后一个数据块,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件;
所述获取链上文件模块,用于循环执行以下步骤,直至获取到所述根哈希值指示的区块链中的各个文件压缩包:将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值,并根据所述当前哈希值从区块链上获取前一个数据块的哈希值、所述当前数据块对应的文件压缩包的文件名和所述文件压缩包中的文件;并将获取的所述前一个数据块的哈希值作为所述当前哈希值。
可选地,所述共享文件的装置,其特征在于,
当所述当前数据块包含初始数据块标识时,指示为完成获取所述根哈希值指示的区块链中的各个文件压缩包。
可选地,所述共享文件的装置,其特征在于,
获取文件压缩包中的文件,包括:对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。
可选地,所述共享文件的装置,其特征在于,
当所述文件压缩包包含所述前一个数据块的哈希值时,对所述文件压缩包执行解压和解密操作,获取所述前一个数据块的哈希值。
为实现上述目的,根据本发明实施例的第五方面,提供了一种共享文件的系统900,包含上述第三方面提供的共享文件的装置700、以及上述第四方面提供的共享文件的装置800。
为实现上述目的,根据本发明实施例的第六方面,提供了一种共享文件的电子设备,其特征在于,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如上述共享文件的方法中任一所述的方法。
为实现上述目的,根据本发明实施例的第七方面,提供了一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如上述共享文件的方法中任一所述的方法。
上述发明中的一个实施例具有如下优点或有益效果:获取待共享的文件,对共享文件压缩包执行区块链并发上链操作,根据压缩包文件名及其哈希值形成数据块,所述数据块包含前一个数据块的哈希值;将最后一个数据块的哈希值为根哈希值;根据根哈希值,获取最后一个数据块包含的文件,进而获取根哈希值指示的区块链中的各个文件压缩包;通过将多个文件压缩成文件包,部分克服了因为文件数量大造成的网络资源负担过高的技术问题,通过将各个文件压缩包并发上链,提高了文件上链和共享的效率;利用区块链上的单向链表数据结构保存和共享文件,提高文件的安全性。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是本发明一个实施例提供的一种存储共享文件的方法的流程示意图;
图2是本发明一个实施例提供的一种获取共享文件的流程示意图;
图3是本发明第一实施例提供的一种生成并存储共享文件数据块链状数据结构示意图;
图4是本发明第一实施例提供的一种获取共享文件的流程示意图;
图5是本发明第二实施例提供的一种生成并存储共享文件数据块链状数据结构示意图;
图6是本发明第二实施例提供的一种获取共享文件的流程示意图;
图7是本发明一个实施例提供的一种共享文件的装置的结构示意图;
图8是本发明一个实施例提供的一种获取共享文件的装置的结构示意图;
图9是本发明一个实施例提供的一种获取共享文件的系统的结构示意图;
图10是本发明一个实施例提供的一种共享文件的流程示意图;
图11是本发明实施例可以应用于其中的示例性系统架构图;
图12是适于用来实现本发明实施例的终端设备或服务器的计算机系统的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
如图1所示,本发明实施例提供了一种共享文件的方法,该方法可以包括以下步骤:
步骤S101:获取待共享的文件,形成至少两个文件压缩包;对所述文件压缩包执行区块链上链操作,并获取所述文件压缩包对应的哈希值。
具体地,待共享的文件为实时生成的文件,根据所述多个文件,形成至少两个文件包(即,多个文件包),并分别形成文件压缩包;其中,获取待共享的文件,形成至少两个文件压缩包,包括:获取预定义时间范围内待共享的文件,形成至少两个文件包,根据网络带宽,确定所述文件包中文件的数量。
其中,所述待共享文件可以为在预定义时间范围内产生的,例如,一个小时之内某电子银行产生的交易文件、半小时之内某两个电子银行产生的对账单文件、一天之内电子商城产生的订单文件等,所述预定义时间范围可以根据业务的场景和产生文件的数量来设定,例如,一天、一小时、10分钟等;本发明对预定义时间范围不做限定。进一步地,根据获取的待共享文件的总数量,根据网络带宽,确定各个文件包中文件的数量,可以理解的是,为了能够根据网络带宽实现并发上链,因此根据网络带宽确定文件包中的文件进而形成多个文件包,并分别对文件包进行压缩操作,分别形成文件压缩包;由于文件的尺寸不同,因此文件包中的数量是可变的;例如:不同电子银行之间的对账单文件、根据一个时间范围内的总量,通过获取网络的带宽确定每个文件包中包含文件的数量,进一步地,进行对文件包进行压缩形成多个文件压缩包。
再进一步地,获取待共享的文件,形成至少两个文件压缩包,还包括对文件包执行压缩操作以及加密操作,可以理解的是,通过加密提高了文件的安全性,尤其是提高了对安全性要求高的例如电子银行之间的对账单等文件的安全性;其中,压缩的方法可以使用压缩工具软件,例如gzip、WinRAR等;加密的方法可以使用压缩软件进行加密,也可使用操作系统或加密软件进行加密,本发明对压缩使用的具体方法、加密的具体方法不做限定。即,分别对所述文件包执行压缩和加密操作,形成所述文件压缩包。
更进一步地,对各个文件压缩包执行区块链并发上链操作,因为各个文件压缩包之间不具有依赖交易关系,从而可以执行文件压缩包的并发上链操作;可以理解的是,由于存在网络带宽等资源的限制,多个文件压缩包的上链操作还可以是分批进行的,每一批内文件压缩包执行并发上链,通过并发上链的操作,提高了文件上链的效率,即,对所述文件压缩包执行区块链并发上链操作。对所述文件压缩包执行区块链上链操作,并获取所述文件压缩包对应的哈希值,其中,可以将文件压缩包作为交易执行上链操作,并从区块链获取对应于该交易返回的哈希值,该哈希值即为所述文件压缩包对应的哈希值,即,并获取所述文件压缩包对应的哈希值。其中,所使用的区块链可以是联盟链、私有链等,本发明对区块链的类型不做限定。本发明对执行区块链上链所使用的具体工具或者方法不做限定。
步骤S102:针对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作;针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块并对所述第二数据块执行区块链上链操作。
具体地,根据步骤S101形成的文件压缩包所包含的文件压缩包的文件名、文件压缩包对应的哈希值,其中文件压缩包的文件名用于唯一标识文件压缩包,通过所述文件名,可以获取与所述文件名对应的文件压缩包,进而获取压缩文件包中的文件,本发明所述文件压缩包的文件名的命名规则不做限定。
进一步地,针对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作;具体地,获取至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块;所述第一数据块为初始数据块,包含指示为初始数据块的标识;即,所述第一数据块还包括初始数据块标识。
下面以图3中所示的例子说明上述步骤;
如图3所示,根据文件压缩包0(即,第一文件压缩包)、文件压缩包0的哈希值(即,第一文件压缩包对应的哈希值)形成第一数据块,所述第一数据块即为初始数据块,所述第一数据块包含初始数据块标识,本发明对初始数据块标识的具体命名规则和内容不做限定。
进一步地,生成第二数据块(节点数据块1);根据初始数据块哈希值、文件压缩包1(即,第二文件压缩包的文件名)、文件压缩包1哈希值(第二文件压缩包对应的哈希值)生成节点数据块1;其中,初始数据块哈希值为节点数据块1(第二数据块)的前一个数据块的哈希值;节点数据块1为所述至少两个文件压缩包中除所述第一文件压缩包(文件压缩包0)以外的第二文件压缩包;即,针对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作。
针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块并对所述第二数据块执行区块链上链操作。其中,所述前一个数据块的哈希值为所述前一个数据块上链之后所获取的,例如,前一个数据块作为一个交易上链,得到了交易的返回值作为前一个数据块的哈希值;类似地,所述一个或者多个第二数据块的哈希值在第二数据块上链后从区块链获取。
可以理解的是,由于第一数据块(即初始数据块)不包含前一个数据块的哈希值,初始数据块作为初始数据块包含初始数据块标识;其中,除第一数据块以外,其他数据块均为第二数据块;可以理解的是,基于第一数据块、一个或者多个第二数据块形成了单向链表存储结构;进一步地,生成第二数据块可以采用两种方法:第一种方法的描述与图3中示例的步骤S301-步骤S304一致;第二种方法与图5中示例的步骤S501-步骤S504的描述一致,在此不再赘述。
步骤S103:将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。
具体地,将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值;由步骤S102的描述可知,第一数据块和一个或者多个第二数据块形成单向链表结构,链表结构包含了第一数据块(初始数据块)和多个第二数据块;其中,多个第二数据块中的最后一个第二数据块的哈希值,作为根哈希值,发送所述根哈希值。
发送所述根哈希值有两种方法:1)通过区块链发送所述根哈希值给有获取共享文件权限的获取方;2)通过其他方式发送所述根哈希值给有获取共享文件权限的获取方,例如:官方电子邮件等;可以理解的是,将所述根哈希值发送给有获取共享文件权限的获取方,所述有权限的获取方可以是一方或者多方;例如:所述文件为银行A和银行B在一个小时内产生的对账单文件;在步骤S101-步骤S103之后产生了根哈希值,则将所述根哈希值发送给对这些对账单文件有获取权限的银行A和银行B;显而易见地,利用该操作进一步提高了文件的安全性。
如图2所示,本发明实施例提供了一种获取共享文件的方法,该方法可以包括以下步骤:
步骤S201:接收根哈希值,根据所述根哈希值从区块链上获取所述根哈希值对应的最后一个数据块,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件。
具体地,根据所述根哈希值,从区块链上获取所述根哈希值对应的最后一个数据块,其中,进一步地,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件;从区块链上获取文件的描述与步骤S401或者步骤S601所描述的示例一致,在此不再赘述。
步骤S202:循环执行以下步骤,直至获取到所述根哈希值指示的区块链中的各个文件压缩包:将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值,并根据所述当前哈希值从区块链上获取前一个数据块的哈希值、所述当前数据块对应的文件压缩包的文件名和所述文件压缩包中的文件;并将获取的所述前一个数据块的哈希值作为所述当前哈希值。
具体地,循环执行直至获取到所述根哈希值指示的区块链中的各个文件压缩包有两种方法:第一种方法与步骤S402-步骤S404所描述的示例一致,在此不再赘述;第二种方法与步骤S602-步骤S604所描述的示例一致,在此不再赘述。
如图3所示,本发明实施例提供了一种利用单向链状数据结构存储共享文件的方法,该方法可以包括以下步骤:
在步骤S301-步骤S304之前,假设各个文件压缩包已经生成并上链。
步骤S301:生成第一数据块。
具体地,根据文件压缩包0、文件压缩包0哈希值形成第一数据块,所述第一数据块即为初始数据块,所述第一数据块包含初始数据块标识,本发明对所述初始数据块标识的具体内容不做限定;即,所述第一数据块还包括初始数据块标识。
其中,文件压缩包0为所述文件压缩包的文件名;并且文件压缩包0为所述第一文件压缩包;即,针对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作。
步骤S302:生成第二数据块(节点数据块1)。
具体地,根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块;如图3的示例所示,根据初始数据块的哈希值、文件压缩包1、文件压缩包1对应的哈希值生成节点数据块1;其中,文件压缩包1为第二文件压缩包的文件名;初始数据块的哈希值为节点数据块1(第二数据块)前一个数据块的哈希值;文件压缩包1哈希值为所述第二文件压缩包对应的哈希值。
步骤S303:生成第二数据块(节点数据块2)。
具体地,如图3的示例所示,根据节点数据块1哈希值、文件压缩包2、文件压缩包2哈希值生成节点数据块2;其中,文件压缩包2为第二文件压缩包的文件名;节点数据块1的哈希值为节点数据块2(第二数据块)前一个数据块的哈希值;文件压缩包2哈希值为所述第二文件压缩包对应的哈希值。
步骤S304:生成第二数据块(节点数据块3)。
具体地,如图3的示例所示,根据节点数据块2哈希值、文件压缩包3、文件压缩包3哈希值生成节点数据块3;其中,文件压缩包3为第二文件压缩包的文件名;节点数据块2哈希值为节点数据块3(第二数据块)前一个数据块的哈希值;文件压缩包3哈希值为所述第二文件压缩包对应的哈希值。
步骤S302-步骤S304描述了多个第二数据块的生成过程,即,针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块并对所述第二数据块执行区块链上链操作。
进一步地,假设节点数据块3为最后一个第二数据块,则将节点数据块3的节点数据块3哈希值作为根哈希值;并发送所述根哈希值;即,将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。
通过步骤S301-步骤S304,举例说明了生成数据块并通过数据块的哈希值关联两个数据块的流程;进一步地,利用链表数据结构存储各个数据块,本发明对数据块的数量、数据块所包含的文件压缩包的具体内容不做限定。
如图4所示,本发明实施例提供了一种基于单向链状数据结构获取共享文件的方法,该方法可以包括以下步骤:
以下步骤S401-步骤S404对应步骤S301-步骤S304所描述的示例说明获取共享文件的方法。
步骤S401:根据接收的根哈希值,获取最后一个数据块(节点数据块3)包含的文件。
具体地,根据步骤S304的描述可知,如图4所示的节点数据块3为最后一个数据块,则节点数据块3的节点数据块3哈希值为根哈希值;接收所述根哈希值;根据所述根哈希值,从区块链上获取所述根哈希值对应的最后一个数据块(节点数据块3),并获取节点数据块3所包含的文件压缩包的文件名(文件压缩包3即为该文件压缩包的文件名),根据文件压缩包的文件名,获取文件压缩包,进而通过解压获取文件压缩包中的各个文件;即,接收根哈希值,根据所述根哈希值从区块链上获取所述根哈希值对应的最后一个数据块,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件。
步骤S402:获取最后一个数据块的前一个数据块(节点数据块2)包含的文件。
具体地,如图4所示,通过步骤S401,获取节点数据块3(最后一个数据块)包含的节点数据块2的哈希值;并将节点数据块2(最后一个数据块的前一个数据块的哈希值)的哈希值(获取的所述前一个数据块的哈希值)作为当前哈希值;根据节点数据块2的哈希值,从区块链上获取节点数据块2所包含的文件压缩包的文件名(文件压缩包2),并获取所述文件压缩包(文件压缩包2)中的文件;其中,节点数据块2的哈希值为最后一个数据块的前一个数据块的哈希值;文件压缩包2为文件压缩包的文件名。
步骤S403:获取前一个数据块(节点数据块1)包含的文件。
具体地,如图4所示,通过步骤S402,获取节点数据块2包含的节点数据块1的哈希值;根据节点数据块1的哈希值,从区块链上获取节点数据块1所包含的文件压缩包的文件名(文件压缩包1),并获取所述文件压缩包(文件压缩包1)中的文件;其中,节点数据块1的哈希值为节点数据块2的前一个数据块的哈希值;并将节点数据块1的哈希值作为当前哈希值;文件压缩包1为文件压缩包的文件名。
步骤S404:获取初始数据块对应的文件。
具体地,如图4所示,通过步骤S403,获取节点数据块1包含的初始数据块的哈希值;并将初始数据块的哈希值作为当前哈希值;根据初始数据块的哈希值,从区块链上获取初始数据块所包含的文件压缩包的文件名(文件压缩包0),并获取所述文件压缩包(文件压缩包0)中的文件;其中,初始数据块的哈希值为节点数据块1的前一个数据块的哈希值;文件压缩包0为文件压缩包的文件名。
可以理解的是,当获取指示为初始数据块的初始数据块标识时,初始数据块包含的压缩文件包中不存在前一个数据块的哈希值;则停止获取前一个数据块,指示为完成链表结构中的各个文件压缩包的获取过程;即,当所述当前数据块包含初始数据块标识时,指示为完成获取所述根哈希值指示的区块链中的各个文件压缩包。
步骤S401-步骤S404所描述的获取文件压缩包中的文件,即,循环执行以下步骤,直至获取到所述根哈希值指示的区块链中的各个文件压缩包:将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值,并根据所述当前哈希值从区块链上获取前一个数据块的哈希值、所述当前数据块对应的文件压缩包的文件名和所述文件压缩包中的文件;并将获取的所述前一个数据块的哈希值作为所述当前哈希值。
进一步地,对获取的文件压缩包执行解压和解密操作,获取文件压缩包中的文件。具体地,对所述文件压缩包执行解压和解密操作的方法与对文件包压缩和加密的方法为一一对应,本发明对压缩、解压、加密、解密的具体方法不做限定。
如图5所示,本发明实施例提供了一种利用单向链状数据结构存储共享文件的方法,该方法可以包括以下步骤:
步骤S501:生成第一数据块(初始数据块)。
具体地,生成第一数据块的描述与步骤S301一致,在此不再赘述。
步骤S502:生成第二数据块(节点数据块1)。
具体地,根据文件压缩包1(第二文件压缩包的文件名)、文件压缩包1哈希值(所述第二文件压缩包对应的哈希值)、初始数据块的哈希值(前一个数据块的哈希值)生成节点数据块1(第二数据块)的第一种方法如步骤S302所描述;根据文件压缩包1(第二文件压缩包的文件名)、文件压缩包1哈希值(所述第二文件压缩包对应的哈希值)、初始数据块的哈希值(前一个数据块的哈希值)生成节点数据块1(第二数据块)的第一种方法的第二种方法如下:
根据第二文件压缩包的文件名(例如,文件压缩包1),获取所述第二文件压缩包所包含的共享文件,对所述共享文件和所述前一个数据块(初始数据块)的哈希值执行压缩和加密操作,形成更新文件压缩包(例如:更新文件压缩包1),对更新文件压缩包执行区块链上链操作并获取对应的哈希值(即更新文件压缩包1哈希值),进一步地,根据更新文件压缩包1、更新文件压缩包1哈希值形成第二数据块(例如,节点数据块1)。
步骤S503:生成第二数据块(节点数据块2)。
具体地,根据文件压缩包2(第二文件压缩包的文件名)、文件压缩包2的哈希值(所述第二文件压缩包对应的哈希值)、节点数据块1的哈希值(前一个数据块的哈希值)生成节点数据块2(第二数据块)的第一种方法如步骤S303所描述;根据文件压缩包2(第二文件压缩包的文件名)、文件压缩包2的哈希值(所述第二文件压缩包对应的哈希值)、节点数据块1的哈希值(前一个数据块的哈希值)生成节点数据块2(第二数据块)的第一种方法的第二种方法如下:
根据第二文件压缩包的文件名(文件压缩包2),获取所述第二文件压缩包所包含的共享文件,对所述共享文件和所述前一个数据块(节点数据块1)的哈希值执行压缩和加密操作,形成更新文件压缩包(例如:更新文件压缩包2),对更新文件压缩包执行区块链上链操作并获取对应的哈希值(即更新文件压缩包2哈希值),根据更新文件压缩包2、更新文件压缩包2哈希值形成第二数据块(例如,节点数据块2)。
步骤S504:生成第二数据块(节点数据块3)。
具体地,根据文件压缩包3(第二文件压缩包的文件名)、文件压缩包3的哈希值(所述第二文件压缩包对应的哈希值)、节点数据块2的哈希值(前一个数据块的哈希值)生成节点数据块3(第二数据块)的第一种方法如步骤S304所描述;根据文件压缩包2(第二文件压缩包的文件名)、文件压缩包2的哈希值(所述第二文件压缩包对应的哈希值)、初始数据块的哈希值(前一个数据块的哈希值)生成节点数据块2(第二数据块)的第一种方法的第二种方法与步骤S503类似,在此不再赘述。
步骤S502-步骤S504描述了生成第二数据块的流程,即,针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块,还包括:根据所述第二文件压缩包的文件名,获取所述第二文件压缩包所包含的共享文件,对所述共享文件和所述前一个数据块的哈希值执行压缩和加密操作,形成更新文件压缩包,对所述更新文件压缩包执行区块链上链操作,并获取所述更新文件压缩包对应的哈希值,根据所述更新文件压缩包的文件名、所述更新文件压缩包的哈希值生成第二数据块。
进一步地,如图5所示,所述节点数据块3为将所述第二数据块中的最后一个第二数据块,将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。即,将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。
通过步骤S501-步骤S504,举例说明了生成数据块的第二种方法,可以理解的是,本发明对数据块的数量、数据块所包含的文件压缩包的具体内容不做限定。
如图6所示,本发明实施例提供了一种基于单向链状数据结构获取共享文件的方法,该方法可以包括以下步骤:
以下步骤S601-步骤S604对应步骤S501-步骤S504所描述的示例说明获取共享文件的方法;
步骤S601:根据接收的根哈希值,获取最后一个数据块(节点数据块3)包含的文件。
具体地,获取最后一个数据块(节点数据块3)所包含的文件压缩包的文件名(即,更新文件压缩包3),根据更新文件压缩包3,获取对应于文件名为“更新文件压缩包3”的文件压缩包,对所述文件压缩包进行解压解密,获取解压解密后的文件包所包含的前一个数据块(节点数据块2)的哈希值,并将节点数据块2哈希值作为当前哈希值,即,将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值。又即,接收根哈希值,根据所述根哈希值从区块链上获取所述根哈希值对应的最后一个数据块,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件。
进一步地,当所述文件压缩包包含的前一个数据块的哈希值时,对所述文件压缩包执行解压和解密操作,并获取所述前一个数据块的哈希值。
步骤S602:获取最后一个数据块的前一个数据块(节点数据块2)包含的文件。
具体地,如图6所示,通过步骤S601,获取节点数据块3(最后一个数据块)包含的节点数据块2的哈希值;其中,节点数据块2为最后一个数据块的前一个数据块,进一步地,根据节点数据块2哈希值,获取节点数据块2所对应的文件压缩包的文件名(更新文件压缩包2);并获取所述文件压缩包中的文件;对所述文件压缩包(更新文件压缩包2)进行解压解密,获取解压解密后的文件包所包含的前一个数据块(节点数据块1)的哈希值;即,当所述文件压缩包包含所述前一个数据块的哈希值时,对所述文件压缩包执行解压和解密操作,获取所述前一个数据块的哈希值。
进一步地,将节点数据块2哈希值作为当前哈希值,并根据所述当前哈希值(节点数据块2哈希值)从区块链上获取前一个数据块的哈希值(节点数据块1哈希值,节点数据块1为节点数据块2的前一个数据块)、所述当前数据块(节点数据块2)对应的文件压缩包的文件名和所述文件压缩包中的文件(更新文件压缩包2中的文件)。
步骤S603:获取前一个数据块(节点数据块1)包含的文件。
具体地,与步骤S602类似,其中,节点数据块1为节点数据块2的前一个数据块,如图6所示,根据节点数据块1的哈希值,获取所述当前数据块(节点数据块1)对应的文件压缩包的文件名和所述文件压缩包中的文件(更新文件压缩包1中的文件)。
对所述文件压缩包(更新文件压缩包1)进行解压解密,获取解压解密后的文件包所包含的前一个数据块(初始数据块)的哈希值,并将节点数据块1哈希值作为当前哈希值;即,当所述文件压缩包包含所述前一个数据块的哈希值时,对所述文件压缩包执行解压和解密操作,获取所述前一个数据块的哈希值。
步骤S604:获取前一个数据块(初始数据块)包含的文件。
具体地,与步骤S603类似,其中,初始数据块为节点数据块1的前一个数据块,如图6所示,根据初始数据块的哈希值,获取所述当前数据块(初始数据块)对应的文件压缩包的文件名和所述文件压缩包中的文件(文件压缩包0中的文件)。可以理解的是,初始数据块包含初始数据块标识;进一步地,当所述当前数据块包含初始数据块标识时,指示为完成获取所述根哈希值指示的区块链中的各个文件压缩包。
经过步骤S601-S604的循环操作,从最后一个数据块到初始数据块,根据各个数据块哈希值,直至获取到所述根哈希值指示的区块链中的各个文件压缩包。即,循环执行以下步骤,直至获取到所述根哈希值指示的区块链中的各个文件压缩包:将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值,并根据所述当前哈希值从区块链上获取前一个数据块的哈希值、所述当前数据块对应的文件压缩包的文件名和所述文件压缩包中的文件;并将获取的所述前一个数据块的哈希值作为所述当前哈希值。
进一步地,获取文件压缩包中的文件,包括:对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。其中,对所述文件压缩包进行解压解密的方法与对所述文件压缩包压缩加密的方法为一一对应,本发明对压缩、解压、加密、解密的具体方法不做限定。
如图7所示,本发明实施例提供了一种共享文件的装置700,包括:文件压缩包上链模块701、文件数据块生成模块702和根哈希值生成模块703;其中,
所述文件压缩包上链模块701,用于获取待共享的文件,形成至少两个文件压缩包;对所述文件压缩包执行区块链上链操作,并获取所述文件压缩包对应的哈希值;
所述文件数据块生成模块702,用于针对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作;针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块并对所述第二数据块执行区块链上链操作;
所述根哈希值生成模块703,用于将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。
可选地,所述文件压缩包上链模块701,还用于获取待共享的文件,形成至少两个文件压缩包,包括:获取预定义时间范围内待共享的文件,形成至少两个文件包,根据网络带宽,确定所述文件包中文件的数量。
可选地,所述文件压缩包上链模块701,还用于获取待共享的文件,形成至少两个文件压缩包,包括:分别对所述文件包执行压缩和加密操作,形成所述文件压缩包。
可选地,所述文件数据块生成模块702,还包括所述第一数据块还包括初始数据块标识。
可选地,所述文件压缩包上链模块701,还包括对所述文件压缩包执行区块链并发上链操作。
可选地,所述文件数据块生成模块702,还用于针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块,还包括:根据所述第二文件压缩包的文件名,获取所述第二文件压缩包所包含的共享文件,对所述共享文件和所述前一个数据块的哈希值执行压缩和加密操作,形成更新文件压缩包,对所述更新文件压缩包执行区块链上链操作,并获取所述更新文件压缩包对应的哈希值,根据所述更新文件压缩包的文件名、所述更新文件压缩包的哈希值生成第二数据块。
如图8所示,本发明实施例提供了一种共享文件的装置800,包括:获取根节点文件模块801和获取链上文件模块802;其中,
所述获取根节点文件模块801,用于接收根哈希值,根据所述根哈希值从区块链上获取所述根哈希值对应的最后一个数据块,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件;
所述获取链上文件模块802,用于所述获取链上文件模块,用于循环执行以下步骤,直至获取到所述根哈希值指示的区块链中的各个文件压缩包:将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值,并根据所述当前哈希值从区块链上获取前一个数据块的哈希值、所述当前数据块对应的文件压缩包的文件名和所述文件压缩包中的文件;并将获取的所述前一个数据块的哈希值作为所述当前哈希值。
可选地,所述获取链上文件模块802,还用于当所述当前数据块包含初始数据块标识时,指示为完成获取所述根哈希值指示的区块链中的各个文件压缩包。
可选地,所述获取链上文件模块802,还用于获取文件压缩包中的文件,包括:对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。
可选地,所述获取链上文件模块802,还用于当所述文件压缩包包含所述前一个数据块的哈希值时,对所述文件压缩包执行解压和解密操作,获取所述前一个数据块的哈希值。
如图10所示,本发明实施例提供了一种共享文件的流程,该流程可以包括以下步骤:
如图10所示的示意流程,利用步骤S1001-步骤S1003描述共享文件上链的过程;利用步骤S1004-步骤S1005描述共享文件获取方获取共享文件的过程;例如,执行共享文件上链的是银行总部,共享文件获取方可以是在业务上与共享文件直接相关的合作银行1、银行2,而所述共享文件为银行1、银行2之间的对账单;可以理解的是,银行1和银行2为有权限获得共享文件的获取方。
步骤S1001:获取待共享的文件,形成至少两个文件压缩包;对所述文件压缩包执行区块链上链操作,并获取所述文件压缩包对应的哈希值。
具体地,关于文件压缩包的形成以及上链的描述与步骤S101一致,在此不再赘述;进一步地,获取待共享的文件,形成至少两个文件压缩包,包括:获取预定义时间范围内待共享的文件,形成至少两个文件包,根据网络带宽,确定所述文件包中文件的数量;分别对所述文件包执行压缩和加密操作,形成所述文件压缩包;对所述文件压缩包执行区块链并发上链操作。
步骤S1002:对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作。
针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块并对所述第二数据块执行区块链上链操作。具体地,关于生成数据块的描述与步骤S102一致,在此不再赘述。
进一步地,针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块,还包括:根据所述第二文件压缩包的文件名,获取所述第二文件压缩包所包含的共享文件,对所述共享文件和所述前一个数据块的哈希值执行压缩和加密操作,形成更新文件压缩包,对所述更新文件压缩包执行区块链上链操作,并获取所述更新文件压缩包对应的哈希值,根据所述更新文件压缩包的文件名、所述更新文件压缩包的哈希值生成第二数据块。
步骤S1003:分别对所述文件压缩包对应的哈希值、所述第一数据块以及对应的哈希值、第二数据块以及对应的哈希值执行区块链上链操作;将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。
具体地,关于发送根哈希值的描述与步骤S103一致,在此不再赘述。
步骤S1004:接收根哈希值,根据所述根哈希值从区块链上获取所述根哈希值对应的最后一个数据块,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件。
具体地,关于根据根哈希值,获取数据块所包含的文件的两种方法的描述与步骤S201一致,在此不再赘述。
步骤S1005:循环执行以下步骤,直至获取到所述根哈希值指示的区块链中的各个文件压缩包:将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值,并根据所述当前哈希值从区块链上获取前一个数据块的哈希值、所述当前数据块对应的文件压缩包的文件名和所述文件压缩包中的文件;并将获取的所述前一个数据块的哈希值作为所述当前哈希值。
具体地,关于循环获取根哈希值指示的区块链中的各个文件压缩包的两种方法的描述与步骤S202一致,在此不再赘述。
本发明实施例还提供了一种共享文件的电子设备,包括:一个或多个处理器;存储装置,用于存储一个或多个程序,当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述任一实施例提供的方法。
本发明实施例还提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现上述任一实施例提供的方法。
图11示出了可以应用本发明实施例的共享文件的方法或共享文件的装置的示例性系统架构1100。
如图11所示,系统架构1100可以包括终端设备1101、1102、1103,网络1104和服务器1105。网络1104用以在终端设备1101、1102、1103和服务器1105之间提供通信链路的介质。网络1104可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备1101、1102、1103通过网络1104与服务器1105交互,以接收或发送消息等。终端设备1101、1102、1103上可以安装有各种客户端应用,例如企业应用客户端、网页浏览器应用、搜索类应用、即时通信工具和邮箱客户端等。
终端设备1101、1102、1103可以是具有显示屏并且支持运行各种客户端应用的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器1105可以是提供各种服务的服务器,例如对用户利用终端设备1101、1102、1103所提出的获取文件的请求提供支持的后台管理服务器。后台管理服务器可以将待共享文件执行上链和存储,针对提出的获取文件的请求进行处理,并将文件返回给终端设备。
需要说明的是,本发明实施例所提供的共享文件的方法一般由服务器1105执行,相应地,共享文件的装置一般设置于服务器1105中。
应该理解,图11中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
下面参考图12,其示出了适于用来实现本发明实施例的终端设备的计算机系统1200的结构示意图。图12示出的终端设备仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图12所示,计算机系统1200包括中央处理单元(CPU)1201,其可以根据存储在只读存储器(ROM)1202中的程序或者从存储部分1208加载到随机访问存储器(RAM)1203中的程序而执行各种适当的动作和处理。在RAM 1203中,还存储有系统1200操作所需的各种程序和数据。CPU 1201、ROM 1202以及RAM 1203通过总线1204彼此相连。输入/输出(I/O)接口1205也连接至总线1204。
以下部件连接至I/O接口1205:包括键盘、鼠标等的输入部分1206;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分1207;包括硬盘等的存储部分1208;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分1209。通信部分1209经由诸如因特网的网络执行通信处理。驱动器1210也根据需要连接至I/O接口1205。可拆卸介质1211,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器1210上,以便于从其上读出的计算机程序根据需要被安装入存储部分1208。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分1209从网络上被下载和安装,和/或从可拆卸介质1211被安装。在该计算机程序被中央处理单元(CPU)1201执行时,执行本发明的系统中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块和/或单元可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块和/或单元也可以设置在处理器中,例如,可以描述为:一种处理器包括件文件压缩包上链模块、文件数据块生成模块和根哈希值生成模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,文件数据块生成模块还可以被描述为“根据所述文件压缩包和前一个数据块的哈希值,形成数据块的模块”。还可以描述为:一种处理器包括件获取根节点文件模块和获取链上文件模块。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,获取根节点文件模块还可以被描述为“根据根哈希值,获取根哈希值对应的数据块所包含文件的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:获取待共享的文件,对共享文件压缩包执行区块链并发上链操作,根据压缩包文件名及其哈希值形成数据块,数据块还包含前一个数据块的哈希值;最后一个数据块的哈希值为根哈希值;根据根哈希值,获取最后一个数据块包含的文件,以及数据块包含的前一个数据块的哈希值,循环执行直至获取到根哈希值指示的区块链中的各个文件压缩包。
根据本发明实施例的技术方案,通过将多个文件压缩成文件包,部分克服了因为文件数量大造成的网络资源负担过高的技术问题,通过将各个文件压缩包并发上链,提高了文件上链和共享的效率;利用区块链上的单向链表数据结构保存和共享文件,提高文件的安全性。上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。

Claims (15)

1.一种共享文件的方法,其特征在于,包括:
获取待共享的文件,形成至少两个文件压缩包;
对所述文件压缩包执行区块链上链操作,并获取所述文件压缩包对应的哈希值;
针对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作;
针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块并对所述第二数据块执行区块链上链操作;
将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。
2.根据权利要求1所述的方法,其特征在于,
获取待共享的文件,形成至少两个文件压缩包,包括:
获取预定义时间范围内待共享的文件,形成至少两个文件包,根据网络带宽,确定所述文件包中文件的数量。
3.根据权利要求2所述的方法,其特征在于,
分别对所述文件包执行压缩和加密操作,形成所述文件压缩包。
4.根据权利要求1所述的方法,其特征在于,
所述第一数据块还包括初始数据块标识。
5.根据权利要求1所述的方法,其特征在于,
对所述文件压缩包执行区块链并发上链操作。
6.根据权利要求1所述的方法,其特征在于,
针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块,还包括:
根据所述第二文件压缩包的文件名,获取所述第二文件压缩包所包含的共享文件,对所述共享文件和所述前一个数据块的哈希值执行压缩和加密操作,形成更新文件压缩包,对所述更新文件压缩包执行区块链上链操作,并获取所述更新文件压缩包对应的哈希值,根据所述更新文件压缩包的文件名、所述更新文件压缩包的哈希值生成第二数据块。
7.一种共享文件的方法,其特征在于,包括:
接收根哈希值,根据所述根哈希值从区块链上获取所述根哈希值对应的最后一个数据块,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件;
循环执行以下步骤,直至获取到所述根哈希值指示的区块链中的各个文件压缩包:将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值,并根据所述当前哈希值从区块链上获取前一个数据块的哈希值、所述当前数据块对应的文件压缩包的文件名和所述文件压缩包中的文件;并将获取的所述前一个数据块的哈希值作为所述当前哈希值。
8.根据权利要求7所述的方法,其特征在于,
当所述当前数据块包含初始数据块标识时,指示为完成获取所述根哈希值指示的区块链中的各个文件压缩包。
9.根据权利要求7所述的方法,其特征在于,
获取文件压缩包中的文件,包括:对所述文件压缩包执行解压和解密操作,获取文件压缩包中的文件。
10.根据权利要求7所述的方法,其特征在于,
当所述文件压缩包包含所述前一个数据块的哈希值时,对所述文件压缩包执行解压和解密操作,获取所述前一个数据块的哈希值。
11.一种共享文件的装置,其特征在于,包括:文件压缩包上链模块、文件数据块生成模块和根哈希值生成模块;其中,
所述文件压缩包上链模块,用于获取待共享的文件,形成至少两个文件压缩包;对所述文件压缩包执行区块链上链操作,并获取所述文件压缩包对应的哈希值;
所述文件数据块生成模块,用于针对所述至少两个文件压缩包中的第一文件压缩包的文件名和所述第一文件压缩包的哈希值,生成第一数据块,并对所述第一数据块执行区块链上链操作;针对所述至少两个文件压缩包中除所述第一文件压缩包以外的第二文件压缩包:根据前一个数据块的哈希值、所述第二文件压缩包的文件名和所述第二文件压缩包对应的哈希值,生成第二数据块并对所述第二数据块执行区块链上链操作;
所述根哈希值生成模块,用于将所述第二数据块中的最后一个第二数据块的哈希值作为根哈希值,并发送所述根哈希值。
12.一种共享文件的装置,其特征在于,包括:获取根节点文件模块和获取链上文件模块;其中,
所述获取根节点文件模块,用于接收根哈希值,根据所述根哈希值从区块链上获取所述根哈希值对应的最后一个数据块,获取所述最后一个数据块所包含的文件压缩包的文件名,并获取所述文件压缩包中的文件;
所述获取链上文件模块,用于循环执行以下步骤,直至获取到所述根哈希值指示的区块链中的各个文件压缩包:将所述最后一个数据块中包含的前一个数据块的哈希值作为当前哈希值,并根据所述当前哈希值从区块链上获取前一个数据块的哈希值、所述当前数据块对应的文件压缩包的文件名和所述文件压缩包中的文件;并将获取的所述前一个数据块的哈希值作为所述当前哈希值。
13.一种共享文件的系统,其特征在于,包括:权利要求10所述的共享文件的装置、以及权利要求11所述的共享文件的装置。
14.一种电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中或7-10中任一所述的方法。
15.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-6中或7-10中任一所述的方法。
CN202010772463.5A 2020-08-04 2020-08-04 一种共享文件的方法、装置及系统 Pending CN111984615A (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN202010772463.5A CN111984615A (zh) 2020-08-04 2020-08-04 一种共享文件的方法、装置及系统
EP21854512.7A EP4180985A1 (en) 2020-08-04 2021-08-04 File sharing method, apparatus, and system
PCT/CN2021/110594 WO2022028484A1 (zh) 2020-08-04 2021-08-04 共享文件的方法、装置及系统
US18/040,619 US20230315692A1 (en) 2020-08-04 2021-08-04 File sharing method, apparatus, and system

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010772463.5A CN111984615A (zh) 2020-08-04 2020-08-04 一种共享文件的方法、装置及系统

Publications (1)

Publication Number Publication Date
CN111984615A true CN111984615A (zh) 2020-11-24

Family

ID=73444510

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010772463.5A Pending CN111984615A (zh) 2020-08-04 2020-08-04 一种共享文件的方法、装置及系统

Country Status (4)

Country Link
US (1) US20230315692A1 (zh)
EP (1) EP4180985A1 (zh)
CN (1) CN111984615A (zh)
WO (1) WO2022028484A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022028484A1 (zh) * 2020-08-04 2022-02-10 中国人民银行数字货币研究所 共享文件的方法、装置及系统

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN114785592B (zh) * 2022-04-21 2023-10-20 中国科学技术大学 信息处理方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170300713A1 (en) * 2015-09-30 2017-10-19 Robert Bosch Gmbh Method and System for Verifiable Searchable Symmetric Encryption
CN107682016A (zh) * 2017-09-26 2018-02-09 深信服科技股份有限公司 一种数据压缩方法、数据解压方法及相关系统
CN108550037A (zh) * 2018-04-11 2018-09-18 北京知金链网络技术有限公司 基于区块链的文件处理方法和装置
CN110032581A (zh) * 2019-01-18 2019-07-19 阿里巴巴集团控股有限公司 一种基于区块链的业务文件存储方法及装置
CN110349019A (zh) * 2019-06-03 2019-10-18 阿里巴巴集团控股有限公司 一种块链式账本中的验证方法、装置及设备
US20200057869A1 (en) * 2017-03-27 2020-02-20 Bundesdruckerei Gmbh Hash values for a bidirectionally linked blockchain
CN110912937A (zh) * 2019-12-23 2020-03-24 杭州中科先进技术研究院有限公司 一种基于区块链的数字存证平台和存证方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101637868B1 (ko) * 2016-02-22 2016-07-08 주식회사 코인플러그 블록체인을 기반으로 하는 금융기관 제증명서류 위변조 검증시스템 및 방법
US11048723B2 (en) * 2016-04-08 2021-06-29 Chicago Mercantile Exchange Inc. Bilateral assertion model and ledger implementation thereof
CN107728941B (zh) * 2017-09-28 2019-09-24 中国银行股份有限公司 一种区块链数据压缩方法及系统
CN110032545A (zh) * 2019-03-27 2019-07-19 远光软件股份有限公司 基于区块链的文件存储方法、系统及电子设备
CN110224814B (zh) * 2019-06-27 2022-01-14 深圳前海微众银行股份有限公司 一种区块链数据共享方法及装置
US11249987B2 (en) * 2019-08-14 2022-02-15 Advanced New Technologies Co., Ltd. Data storage in blockchain-type ledger
US11507535B2 (en) * 2019-10-16 2022-11-22 International Business Machines Corporation Probabilistic verification of linked data
CN111984615A (zh) * 2020-08-04 2020-11-24 中国人民银行数字货币研究所 一种共享文件的方法、装置及系统

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170300713A1 (en) * 2015-09-30 2017-10-19 Robert Bosch Gmbh Method and System for Verifiable Searchable Symmetric Encryption
US20200057869A1 (en) * 2017-03-27 2020-02-20 Bundesdruckerei Gmbh Hash values for a bidirectionally linked blockchain
CN107682016A (zh) * 2017-09-26 2018-02-09 深信服科技股份有限公司 一种数据压缩方法、数据解压方法及相关系统
CN108550037A (zh) * 2018-04-11 2018-09-18 北京知金链网络技术有限公司 基于区块链的文件处理方法和装置
CN110032581A (zh) * 2019-01-18 2019-07-19 阿里巴巴集团控股有限公司 一种基于区块链的业务文件存储方法及装置
CN110349019A (zh) * 2019-06-03 2019-10-18 阿里巴巴集团控股有限公司 一种块链式账本中的验证方法、装置及设备
CN110912937A (zh) * 2019-12-23 2020-03-24 杭州中科先进技术研究院有限公司 一种基于区块链的数字存证平台和存证方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
姚浩男;卢清华;张卫山;刘越;: "基于区块链的数据管理设计模式", 计算机系统应用, no. 07, 15 July 2020 (2020-07-15) *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2022028484A1 (zh) * 2020-08-04 2022-02-10 中国人民银行数字货币研究所 共享文件的方法、装置及系统

Also Published As

Publication number Publication date
US20230315692A1 (en) 2023-10-05
WO2022028484A1 (zh) 2022-02-10
EP4180985A1 (en) 2023-05-17

Similar Documents

Publication Publication Date Title
CN107888656B (zh) 服务端接口的调用方法和调用装置
CN110572422A (zh) 数据下载方法和装置
WO2022028484A1 (zh) 共享文件的方法、装置及系统
CN110753020A (zh) 网络请求处理方法和装置
CN111339206B (zh) 一种基于区块链的数据共享方法和装置
CN112416396A (zh) 一种应用程序更新方法和系统
CN111931474A (zh) 信息表生成方法、装置、电子设备和计算机可读介质
CN111181920A (zh) 一种加解密的方法和装置
CN111371753A (zh) 一种资源共享方法和装置
CN111010283B (zh) 用于生成信息的方法和装置
CN112329044A (zh) 信息获取方法、装置、电子设备和计算机可读介质
CN113765968A (zh) 一种文件传输方法、装置和系统
CN111984614B (zh) 一种共享文件的方法、装置和系统
CN111984612B (zh) 一种共享文件的方法、装置和系统
CN111984613B (zh) 一种共享文件的方法、装置和系统
CN111984616B (zh) 一种更新共享文件的方法、装置和系统
CN111161072A (zh) 基于区块链的随机数生成方法、设备及存储介质
CN115277684A (zh) 文件传输方法、装置、设备以及存储介质
CN115567263A (zh) 一种数据传输管理的方法、数据处理的方法和装置
CN109657481B (zh) 数据管理方法及装置
CN110705935B (zh) 一种物流单据的处理方法和装置
CN113761566A (zh) 一种数据处理方法和装置
CN111931204A (zh) 用于分布式系统的加密去重存储方法、终端设备
CN113761585A (zh) 一种数据处理方法、装置和系统
CN111835846B (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