一种基于区块链智能合约的密文分享方法技术

技术编号:26377028 阅读:39 留言:0更新日期:2020-11-19 23:45
本发明专利技术公开了一种基于区块链智能合约的密文分享方法,涉及文件分享技术领域,分享者利用接收者的公钥对密码进行加密得到加密密码,选择/输入接收者的区块链地址,将加密密码、接收者的区块链地址和密文存入链上;接收者通过查询自己区块链地址上别人分享给自己的信息,获取加密密码和密文,并通过私钥对加密密码进行解密,得到解密后的密码,再通过密码对密文进行解密,进而获得密文的内容;若加密密码和密文同时被他人截获,但核实该用户区块链地址并非既定接收者,则禁止该用户查阅/下载加密密码和密文。本发明专利技术通过区块链网络对密码进行公钥加密和私钥解密,相当于对密文进行了双重加密,再基于区块链网络的安全性,保证了密文的安全性。

【技术实现步骤摘要】
一种基于区块链智能合约的密文分享方法
本专利技术涉及文件分享
,具体是一种基于区块链智能合约的密文分享方法。
技术介绍
现代社会无纸化办公已经普及,对于一些加密文件,在传输加密文件的同时,还需要将解密加密文件的密码告诉对方。现有的密码传输方式有线下抄送或线上发送。线下抄送是将密码以纸质文件形式通过快递等方式传递给接收方,这种方式花费的时间周期较长,且传递过程中存在密钥丢失的可能性,无法满足时效性要求。线上发送主要是通过邮件、微信、QQ等常用聊天工具将密码发送给接收方,虽然时效性很好,但是在不安全的网络环境下,密码和文件很可能被同时截获,存在文件泄露的风险。
技术实现思路
针对上述技术问题,本专利技术提供一种基于区块链智能合约的密文分享方法。一种基于区块链智能合约的密文分享方法,分享者利用接收者的公钥对密码进行加密得到加密密码,选择/输入接收者的区块链地址,将加密密码、接收者的区块链地址和密文存入链上;接收者通过查询自己区块链地址上别人分享给自己的信息,获取加密密码和密文,并通过私钥对加密密码进行解密,得到解密后的密码,再通过密码对密文进行解密,进而获得密文的内容;若加密密码和密文同时被他人截获,但核实该用户区块链地址并非既定接收者,则禁止该用户查阅/下载加密密码和密文。进一步的,密文在链上的存储方法为,将密文按照既定大小的块对其进行切分,拆成若干子文件,存储至存储块;通过散列算法计算出每个子文件的散列值,在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储;将密文的切分后的子文件散列值按顺序整理成子文件排序表,作为密文的元数据之一;通过智能合约将加密密码、密文和分享对象存入链上,并返回密文的子文件排序表。进一步的,当发生散列冲突时,使用另一种散列算法计算出该子文件内容的二级散列值,并存放于二级散列表中,记录该子文件两次使用的散列算法及相应散列值;或者,将子文件内容依次存储并使用二级索引标记存储位置。进一步的,智能合约内计算的散列值与上传子文件的散列值不一致时,不允许上传。本专利技术通过区块链网络对密码进行公钥加密和私钥解密,相当于对密文进行了双重加密,再基于区块链网络的安全性,保证了密文的安全性,避免了密码和密文同时被截获,存在的泄露风险,即便密文下载后被截获,没有接收者私钥解密,截获者也无法打开密文。附图说明图1为密文分享方法流程图;图2为子文件内容及其散列值的映射示意图。具体实施方式下面结合附图和具体实施方式对本专利技术作进一步详细的说明。本专利技术的实施例是为了示例和描述起见而给出的,而并不是无遗漏的或者将本专利技术限于所公开的形式。很多修改和变化对于本领域的普通技术人员而言是显而易见的。选择和描述实施例是为了更好说明本专利技术的原理和实际应用,并且使本领域的普通技术人员能够理解本专利技术从而设计适于特定用途的带有各种修改的各种实施例。一种基于区块链智能合约的密文分享方法,如图1所示,分享者利用接收者的公钥对密码进行加密得到加密密码,选择/输入接收者的区块链地址,将加密密码、接收者的区块链地址和密文存入链上。接收者通过查询自己区块链地址上别人分享给自己的信息,获取加密密码和密文,并通过私钥对加密密码进行解密,得到解密后的密码,再通过密码对密文进行解密,进而获得密文的内容。若加密密码和密文同时被他人截获,但核实该用户区块链地址并非既定接收者,则禁止该用户查阅/下载加密密码和密文。本方案可通过DAPP实现。密码对密文进行加密和解密,通过区块链网络对密码进行公钥加密和私钥解密,相当于对密文进行了双重加密,再基于区块链网络的安全性,保证了密文的安全性,即便密文下载后被截获,没有接收者私钥解密,截获者也无法打开密文。密码和密文上链的好处还在于,不用担心密码或文件的丢失。密文在链上的存储方法为,将密文按照既定大小的块对其进行切分,拆成若干子文件,存储至存储块;通过散列算法计算出每个子文件的散列值,在智能合约内建立用于存放所有子文件散列值的全局散列表,实现子文件内容及其散列值的映射存储,如图2所示;将密文的切分后的子文件散列值按顺序整理成子文件排序表,作为密文的元数据之一;通过智能合约将加密密码、密文和分享对象存入链上,并返回密文的子文件排序表。密文上链流程为:①对密文进行切分,得到若干子文件;针对每一子文件,若已存储相同内容的子文件,则该子文件无需上传,即仅上传无相同内容的子文件;②所有需要上传的子文件均上传完毕后,将密文的切分后的子文件散列值按顺序整理成子文件排序表,与其他元数据一起传递到智能合约内,完成此次密文上链,其中其他元数据包括但不限于加密者、文件名、文件大小。由此流程可以看出,对于重复的内容,无需重复存储,极大地节约了存储资源。密文下载流程:①从智能合约内获取密文的元数据(包括子文件排序表);②访问智能合约内的全局散列表,下载子文件内容并依序排列,完成密文的重建。将密文的切分大小称之为块,块的大小为预设值,本实施例中,该预设值可以是全局参数,也可以是文件参数,还可以是基于文本智能识别的动态值。若块的大小是全局参数,则可以提高全局散列表的复用率,每个子文件使用固定大小更有利于发现相同内容的子文件,从而减少相同内容子文件的重复存储。若块的大小是文件参数,则可以提供用户侧的灵活定制,用户根据其发现的可以复用子文件,按照一定大小的块对其待存储文件进行分割,从而提高特定文件(组)的文件复用率。若块的大小基于文本智能识别的动态值,则可以对比待上传文件与已存储文件的内容,选择最佳的切分方式。子文件排序表可以采用顺序结构或链式结构的线性表存储于智能合约内。若采用顺序结构进行存储,则逻辑实现简单,但增删子文件时会产生大量的数据移动,进而增大智能合约的执行成本;若采用链式结构,随机访问性能和存储空间利用率存在一定的牺牲,但是动态增删子文件的执行成本会显著下降。子文件排序表具体选择何种线性存储结构,根据具体应用的实际情况进行选择。通过散列算法计算出每个子文件的散列值,存在不同内容的子文件计算出相同散列值的可能性。为了避免这种散列冲突引发文件存储冲突,当遇到散列冲突时,使用另一种散列算法计算出该子文件内容的二级散列值,并存放于二级散列表中,记录该子文件两次使用的散列算法及相应散列值,便于后期该子文件内容存储的定位;除此之外,还可以将子文件内容依次存储并使用二级索引标记存储位置,例如不同的两个子文件,散列值均为X,则用X0、X2对其进行区分。前一种是二维散列表存储,可以一定程序上避免冲突,重复文件的检索逻辑始终维持同样的时间复杂度,但是冲突的增加可能导致子文件无处存储的问题;后一种是采用二维线性表存储散列值,可以动态无限扩展,冲突增加时可以始终保证可用,但需要牺牲重复文件的检索速度。当然,为防止恶意攻击,智能合约内计算的散列值与存储子文件的散列值不一致时,不允许存储,防止恶意攻击者利用篡改过的内容污染全局散列表的准确性。显然,所描述的实施例仅仅是本专利技术的一部分实施例本文档来自技高网...

【技术保护点】
1.一种基于区块链智能合约的密文分享方法,其特征在于,分享者利用接收者的公钥对密码进行加密得到加密密码,选择/输入接收者的区块链地址,将加密密码、接收者的区块链地址和密文存入链上;接收者通过查询自己区块链地址上别人分享给自己的信息,获取加密密码和密文,并通过私钥对加密密码进行解密,得到解密后的密码,再通过密码对密文进行解密,进而获得密文的内容;若加密密码和密文同时被他人截获,但核实该用户区块链地址并非既定接收者,则禁止该用户查阅/下载加密密码和密文。/n

【技术特征摘要】
1.一种基于区块链智能合约的密文分享方法,其特征在于,分享者利用接收者的公钥对密码进行加密得到加密密码,选择/输入接收者的区块链地址,将加密密码、接收者的区块链地址和密文存入链上;接收者通过查询自己区块链地址上别人分享给自己的信息,获取加密密码和密文,并通过私钥对加密密码进行解密,得到解密后的密码,再通过密码对密文进行解密,进而获得密文的内容;若加密密码和密文同时被他人截获,但核实该用户区块链地址并非既定接收者,则禁止该用户查阅/下载加密密码和密文。


2.根据权利要求1所述的密文分享方法,其特征在于,密文在链上的存储方法为,将密文按照既定大小的块对其进行切分,拆成若干子文件,存储至存储块;通过散列算法计算出每个子文件的散列值,在智能合约内建立用于存放所有子文件散列值...

【专利技术属性】
技术研发人员:杨宁波杨健
申请(专利权)人:安徽高山科技有限公司
类型:发明
国别省市:安徽;34

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1