本发明涉及金融科技(fintech)领域中的区块链(blockchain)领域,尤其涉及一种基于区块链的加密数据分享方法及装置。
背景技术:
随着计算机技术的发展,越来越多的技术应用在金融领域,传统金融业正在逐步向金融科技(fintech)转变,但由于金融行业的安全性、实时性要求,也对技术提出的更高的要求。区块链(blockchain)作为不可篡改的数据库,常应用于金融科技领域。数据分享方可将数据上传至区块链,而后区块链可通过分布式账本进行跨平台的数据共享,声明了数据的可信性和防篡改。数据使用方在使用数据时,通过安全方式向数据分享方请求、并获取原始数据,数据使用方获取到原始数据后,通过同样的加密算法和链上加密数据进行对比,确保原始数据的真实可信。
对于一些保密性较高的数据,考虑到电子数据的易复制、易传播性。数据分享方会先对数据进行加密,再将加密数据上传到区块链,从而防止数据被滥用。然而对于一些有规律的数据,有被暴力破解的风险,如身份证号码。目前的方式中,为了防止数据被暴力破解,对于不同的数据,数据加密方采用不同的密钥对其进行加密,虽然能够避免暴力破解的风险,但是数据分享方需要对加密数据的密钥进行管理,当数据量比较大时,需要管理大量的密钥。
技术实现要素:
本发明提供一种基于区块链的加密数据分享方法及装置,解决了现有技术中数据量比较大时,数据分享方需要管理大量的密钥的问题。
第一方面,本发明提供一种基于区块链的加密数据分享方法,包括:针对第i条明文数据,按照第一加密算法,获得第i首层加密值;根据所述第i首层加密值和至少一个随机盐值,生成所述第i条明文数据的第i加密私钥;其中,任一随机盐值是至少根据主私钥和所述第i条明文数据生成的;至少根据所述第i加密私钥,按照第三加密算法,生成第i加密公钥;至少根据所述第i加密公钥,按照所述第三加密算法,对第i条明文数据加密,获得所述第i加密数据;将所述第i加密公钥和所述第i加密数据上传至区块链;所述第i加密公钥用于数据使用方在获取到第i条明文数据后加密,并与所述第i加密数据对比。
上述方法中,对于任一条第i条明文数据,可以根据所述第i首层加密值和至少一个随机盐值,生成所述第i条明文数据的第i加密私钥,而任一随机盐值是至少根据主私钥和所述第i条明文数据生成的,也就是说,一个主私钥可以生成至少一个随机盐值,进而生成针对所述第i条明文数据的第i加密私钥,生成第i加密公钥,加密任一条第i条明文数据,只需要临时生成第i加密私钥,以及第i加密公钥,进而对第i条明文数据加密,获得所述第i加密数据,数据分享方只需要保存主私钥即可,不需要保存第i加密私钥,数据提供方在获取到第i条明文数据后,可以通过区块链上公布的所述第i加密公钥对所述第i条明文数据加密,若与所述第i加密数据对比相同,证明获得的数据确实为在区块链上声明的所述第i条明文数据,从而数据分享方即便分享较大数据量的加密数据时,也只需要管理主私钥。
可选的,所述至少一个随机盐值为m个随机盐值,m为大于1的整数;所述根据所述第i首层加密值和至少一个随机盐值,生成所述第i条明文数据的第i加密私钥,包括:
根据所述m个随机盐值中的第k随机盐值和所述第i首层加密值,获得第k私钥分片;
在累计获取m个私钥分片后,根据所述m个私钥分片,按照预设运算,获得第i加密私钥。
上述方法中,每个私钥分片都是经过所述第i首层加密值结合第k随机盐值混淆后获得的,随机性更强,进一步根据所述m个私钥分片,按照预设运算,获得第i加密私钥,所以更不易被破解。
可选的,所述根据所述m个随机盐值中的第k随机盐值和所述第i首层加密值,获得第k私钥分片,包括:按照第二加密算法,根据所述第k随机盐值和所述第i首层加密值,获得第1嵌套加密值;从j=1开始,迭代执行c-1次:按照所述第二加密算法,根据第j嵌套加密值和所述第i首层加密值,获得第j 1嵌套加密值;从而获得c-1个嵌套加密值;c为大于2的正整数;根据c个嵌套加密值,按照所述预设运算,获得所述第k私钥分片;所述c个嵌套加密值包括所述c-1个嵌套加密值和所述第1加密值。
上述方法中,首先通过根据所述第k随机盐值和所述第i首层加密值,获得第1嵌套加密值,并通过迭代执行c-1次,从而获得c-1个嵌套加密值,进而获得第k私钥分片,所以第k私钥分片经过多次所述第k随机盐值的混淆和迭代,随机性更强。
可选的,所述第k随机盐值具体按照以下方式获得:根据所述第i条明文数据、所述主私钥和第k标识,生成第k随机数;根据所述第k随机值,按照所述第一加密算法,获得所述第k随机盐值。
上述方式下,首先结合第k标识生成第k随机数,并进一步加密获得第k标识,生成第k随机数,从而使得所述第k随机盐值随机性更强。
可选的,所述根据所述第i条明文数据、所述主私钥和第k标识,生成第k随机数,包括:根据所述第i条明文数据和所述主私钥,按照所述预设运算,获得随机中间结果;根据第k标识,按照预设随机编码方式,获得第k随机编码;根据所述随机中间结果和所述第k随机编码,生成所述第k随机数。
上述方式中,获得随机中间结果后,还按照预设随机编码方式,获得第k随机编码,并与所述第k标识一起混淆,得到所述第k随机数,从而使得所述第k随机数的隐匿性更强。
可选的,所述预设运算为预设逻辑位运算。
上述方式中,通过选用预设逻辑位运算作为所述预设运算,可以提升运算效率。
可选的,所述至少根据所述第i加密私钥,按照第三加密算法,生成第i加密公钥,包括:
根据所述第i加密私钥和椭圆曲线的生成元,按照所述第三加密算法,确定所述第i加密公钥;
所述至少根据所述第i加密公钥,按照所述第三加密算法,对第i条明文数据加密,获得所述第i加密数据,包括:
根据所述第i加密公钥、加密随机数和所述生成元,按照所述第三加密算法,对所述第i条明文数据加密,获得所述第i加密数据。
通过椭圆曲线的生成元确定所述第i加密公钥后,对所述第i条明文数据加密,获得所述第i加密数据,验证时也不需要披露所述第i加密数据的对应明文,从而加密后的隐匿性更强。
第二方面,本发明提供一种基于区块链的加密数据分享装置,包括:加密模块,用于针对第i条明文数据,按照第一加密算法,获得第i首层加密值;根据所述第i首层加密值和至少一个随机盐值,生成所述第i条明文数据的第i加密私钥;其中,任一随机盐值是至少根据主私钥和所述第i条明文数据生成的;至少根据所述第i加密私钥,按照第三加密算法,生成第i加密公钥;至少根据所述第i加密公钥,按照所述第三加密算法,对第i条明文数据加密,获得所述第i加密数据;
数据传输模块,用于将所述第i加密公钥和所述第i加密数据上传至区块链;所述第i加密公钥用于数据使用方在获取到第i条明文数据后加密,并与所述第i加密数据对比。
可选的,所述至少一个随机盐值为m个随机盐值,m为大于1的整数;所述加密模块具体用于:
根据所述m个随机盐值中的第k随机盐值和所述第i首层加密值,获得第k私钥分片;
在累计获取m个私钥分片后,根据所述m个私钥分片,按照预设运算,获得第i加密私钥。
可选的,所述加密模块具体用于:按照第二加密算法,根据所述第k随机盐值和所述第i首层加密值,获得第1嵌套加密值;
从j=1开始,迭代执行c-1次:按照所述第二加密算法,根据第j嵌套加密值和所述第i首层加密值,获得第j 1嵌套加密值;从而获得c-1个嵌套加密值;c为大于2的正整数;
根据c个嵌套加密值,按照所述预设运算,获得所述第k私钥分片;所述c个嵌套加密值包括所述c-1个嵌套加密值和所述第1加密值。
可选的,所述加密模块具体用于:
根据所述第i条明文数据、所述主私钥和第k标识,生成第k随机数;
根据所述第k随机值,按照所述第一加密算法,获得所述第k随机盐值。
可选的,所述加密模块具体用于:根据所述第i条明文数据和所述主私钥,按照所述预设运算,获得随机中间结果;
根据第k标识,按照预设随机编码方式,获得第k随机编码;
根据所述随机中间结果和所述第k随机编码,生成所述第k随机数。
可选的,所述预设运算为预设逻辑位运算。
可选的,所述加密模块具体用于:根据所述第i加密私钥和椭圆曲线的生成元,按照所述第三加密算法,确定所述第i加密公钥;根据所述第i加密公钥、加密随机数和所述生成元,按照所述第三加密算法,对所述第i条明文数据加密,获得所述第i加密数据。
上述第二方面及第二方面各个可选装置的有益效果,可以参考上述第一方面及第一方面各个可选方法的有益效果,这里不再赘述。
第三方面,本发明提供一种计算机设备,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
第四方面,本发明提供一种存储介质,包括程序或指令,当所述程序或指令被执行时,用以执行上述第一方面及第一方面各个可选的方法。
本发明的这些方面或其他方面在以下实施例的描述中会更加简明易懂。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简要介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种基于区块链的加密数据分享方法对应的具体流程示意图;
图2为本发明实施例提供的一种基于区块链的加密数据分享方法对应的具体流程示意图;
图3为本发明实施例提供的一种基于区块链的加密数据分享方法中第k私钥分片的生成示意图;
图4为本发明实施例提供的一种基于区块链的加密数据分享装置的结构示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明作进一步地详细描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
下面首先描述本申请实施例中出现的名词。
区块链:一种利用块链式数据结构来验证与存储数据、利用分布式节点共识算法来生成和更新数据、利用密码学的方式保证数据传输和访问的安全、利用由自动化脚本代码组成的智能合约来编程和操作数据的一种全新的分布式基础架构与计算方式。
公钥体系:密钥是成对生成的,每对密钥由一个公钥和一个私钥组成。在实际应用中,私钥由拥有者自己保存,而公钥则需要公布于众。
私钥:私钥是区块链账户的唯一凭证,用于对交易进行签名。
非对称加密:非对称加密算法需要两个密钥:公开密钥(publickey:简称公钥)和私有密钥(privatekey:简称私钥)。公钥与私钥是一对,如果用公钥对数据进行加密,只有用对应的私钥才能解密。
哈希算法:又称为杂凑、散列算法,是一个密码散列函数家族,能计算出一个数字消息所对应到的长度固定的字符串(又称消息摘要)的算法。
hmac算法:hmac是密钥相关的哈希运算消息认证码(hash-basedmessageauthenticationcode),hmac运算利用哈希算法,以一个密钥和一个消息为输入,生成一个消息摘要作为输出。
在金融机构(银行机构、保险机构或证券机构)在进行业务(如银行的贷款业务、存款业务等)运转过程中,数据分享方可将数据上传至区块链,而后区块链可通过分布式账本进行跨平台的数据共享。数据分享方会先对数据进行加密,再将加密数据上传到区块链,从而防止数据被滥用。然而对于一些有规律的数据,有被暴力破解的风险。如果数据加密方采用不同的密钥对其进行加密,虽然能够避免暴力破解的风险,但是数据分享方需要对加密数据的密钥进行管理,当数据量比较大时,需要管理大量的密钥。这种情况不符合银行等金融机构的需求,无法保证金融机构各项业务的高效运转。如图1所示,本申请提供一种基于区块链的加密数据分享方法。
步骤101:针对第i条明文数据,按照第一加密算法,获得第i首层加密值。
步骤102:根据所述第i首层加密值和至少一个随机盐值,生成所述第i条明文数据的第i加密私钥。
其中,任一随机盐值是至少根据主私钥和所述第i条明文数据生成的。
步骤103:至少根据所述第i加密私钥,按照第三加密算法,生成第i加密公钥。
步骤104:至少根据所述第i加密公钥,按照所述第三加密算法,对第i条明文数据加密,获得所述第i加密数据。
步骤105:将所述第i加密公钥和所述第i加密数据上传至区块链。
所述第i加密公钥用于数据使用方在获取到第i条明文数据后加密,并与所述第i加密数据对比。
需要说明的是,上述步骤101~步骤105的方法提出一种基于区块链的加密数据分享方法。步骤101~步骤105的方法中,第一加密算法默认为不可逆算法,即不能通过第i首层加密值反向退出第i条明文数据的算法,如哈希算法。随机盐值为按照一定规则生成的随机混淆信息,用于增加数据加密的随机性。需要说明的是,随机盐值是生成方式可以有多种,如根据随机数、主私钥和所述第i条明文数据生成,还可以加入一些其他的随机信息或者预设信息。
步骤101~步骤105的方法中,主私钥可以通过任意已公开的私钥生成算法生成的,然后针对每一条明文数据,可以至少根据利用被加密的数据和主私钥共同生成该条明文数据的随机盐值,再生成该条明文数据的子私钥,用子私钥对该条明文数据进行加密,从而数据分享方即便分享较大数据量的加密数据时,也只需要管理主私钥。
举例来说,待加密的明文数据集合为d={d1,...,di,...,dn},d包括n条明文数据,i,n为正整数,其中di为第i条明文数据,那么所述第i加密公钥ki上链即可,数据提供方不需要存储第i条明文数据的加密私钥,只需要存储主私钥即可。
需要说明的是,获得第i加密私钥的方式有多种,如直接按照预设的加密算法,将所述第i首层加密值和至少一个随机盐值的加密结果,作为所述第i条明文数据的第i加密私钥,也可以先根据所述第i首层加密值和至少一个随机盐值的加密结果运算得出第i中间私钥,再对第i中间私钥做加密处理,得出第i加密私钥,在此不做限定。另外,除了所述第i首层加密值和至少一个随机盐值,还可以加入其他信息等,从而用于生成所述第i条明文数据的第i加密私钥。
一种可选实施方式中,所述至少一个随机盐值为m个随机盐值,m为大于1的整数;步骤102具体可以为:
步骤1021:根据所述m个随机盐值中的第k随机盐值和所述第i首层加密值,获得第k私钥分片。
步骤1022:在累计获取m个私钥分片后,根据所述m个私钥分片,按照预设运算,获得第i加密私钥。
举例来说,所述m个随机盐值包括:第1随机盐值,第2随机盐值,…,第m随机盐值。
进一步地,可以根据第1随机盐值和第1首层加密值,获得第1私钥分片;根据第2随机盐值和第2首层加密值,获得第2私钥分片;以此类推,根据第m随机盐值和第m首层加密值,获得第m私钥分片。
那么m个私钥分片包括:第1私钥分片、第2私钥分片、…、第m私钥分片。之后便按照预设运算,获得第i加密私钥。
在一种可选实施方式中,所述预设运算为预设逻辑位运算。
如预设逻辑位运算为异或运算,从而提高运算效率。
一种可选实施方式中,步骤1021具体可以为:
步骤(1021-1):按照第二加密算法,根据所述第k随机盐值和所述第i首层加密值,获得第1嵌套加密值。
步骤(1021-2):从j=1开始,迭代执行c-1次:按照所述第二加密算法,根据第j嵌套加密值和所述第i首层加密值,获得第j 1嵌套加密值;从而获得c-1个嵌套加密值。
c为大于2的正整数。
步骤(1021-3):根据c个嵌套加密值,按照所述预设运算,获得所述第k私钥分片;所述c个嵌套加密值包括所述c-1个嵌套加密值和所述第1加密值。
需要说明的是,步骤(1021-2)中,第2嵌套加密值开始,每个嵌套加密值都是由前一个嵌套加密值和所述第i首层加密值生成,从而通过多层迭代从而获得c-1个嵌套加密值,增加了破解难度。
进一步地,再根据c个嵌套加密值,按照所述预设运算,获得所述第k私钥分片,从而所述第k私钥分片随机性更强。
一种可选实施方式中,所述第k随机盐值具体按照以下方式获得:
根据所述第i条明文数据、所述主私钥和第k标识,生成第k随机数;根据所述第k随机值,按照所述第一加密算法,获得所述第k随机盐值。
举例来说,第k标识是一个关于k的函数,可以与k相关联,再结合随机的生成算法,便能得到第k随机数,并且进一步按照所述第一加密算法,获得所述第k随机盐值,所以第k随机盐值更加难被破解。
更具体地,所述第k随机值具体可以通过如下方式获得:
根据所述第i条明文数据和所述主私钥,按照所述预设运算,获得随机中间结果;根据第k标识,按照预设随机编码方式,获得第k随机编码;根据所述随机中间结果和所述第k随机编码,生成所述第k随机数。
在上述方法下,获得随机中间结果后,还可以进一步地通过预设随机编码方式,使得随机性更强,如预设随机编码方式为大字节编码。
一种可选实施方式中,步骤103具体可以为:
根据所述第i加密私钥和椭圆曲线的生成元,按照所述第三加密算法,确定所述第i加密公钥。
步骤104具体可以为:
根据所述第i加密公钥、加密随机数和所述生成元,按照所述第三加密算法,对所述第i条明文数据加密,获得所述第i加密数据。
通过椭圆曲线的生成元确定所述第i加密公钥后,对所述第i条明文数据加密,获得所述第i加密数据,验证时也不需要披露所述第i加密数据的对应明文,从而加密后的隐匿性更强。
下面结合图2,详细描述本申请提供的一种基于区块链的加密数据分享方法。
步骤(1):采用任意公开私钥生成算法生成主私钥,标记为主私钥mk,主私钥由数据提供方保管。
步骤(2):考虑到加密私钥的安全性,避免因同构数据样本库小而被暴力破解,需要由数据提供方自定义第i条明文数据的第i加密私钥的长度(cklen),第i加密私钥的子私钥一般为256位的整数倍,如果一次生成的子私钥长度不满足指定的私钥长度,需要进行多次生成并进行拼接。所以首先需要计算加密私钥的分片数m,如下。
步骤(3):针对每个私钥分片,如第k私钥分片,根据第i条数据明文、主私钥mk、和加密私钥分片的第k标识(下标k)生成一个第k随机数rk,其中0<k≤m,生成方式为对主私钥和数据明文进行异或处理,拼接上编码成大字节序的32位整型的k值,如下所示。
rk=mk^di||int_32_be(k);
本申请中,||表示拼接。
步骤(4):根据第k随机数rk计算第k随机盐值,用于防止对加密私钥分片进行逆向查找法和彩虹表攻击。
saltk=sha256(rk);sha256表示sha256哈希算法;
步骤(5):通过第k随机盐值和主私钥计算第一个hmac_sha_256值,在k等于1时,如下所示。在hmac及sha计算添加随机盐值的情况下,能够降低暴力攻击的可能性,但是由于hash的运算太快,仍无法保证在超级硬件设备上(如gpu)被破解,因此,下面可以通过执行步骤(6),来增加随机性。
hmac1=hmac_sha_256(sha_256(mk) saltk);
步骤(6):通过迭代因子,进行多次正向迭代,降低反向计算的速度。做法为持续迭代多次hmac_sha_256值,提升被破解的难度。每一次迭代记为hmacj,其中0<j<c,c为迭代的次数,可以设置迭代次数,如大于10000次,其中hmacj的随机盐值为上次计算获得的hmac_sha_256值,即hmacj-1。如图3所示。
hmacj=hmac_sha_256(sha_256(mk) hmacj-1),1<j<c;
步骤(7):对所有hmac进行“^”异或运算,计算加密私钥分片sm,如下。
sk=hmac1^hmac2^...^hmacc;
步骤(8):根据私钥分片个数,循环执行步骤(3)到步骤(7)步骤,生成其他m-1个私钥分片,并对m个私钥分片进行拼接,生成第di条数据的加密私钥。
cki=s1||s2||...||sm;
步骤(9):取一条公开的椭圆曲线,选择一个公开的点g,作为生成元,计算第i个加密私钥对应的公钥ki:
ki=cki*g;
步骤(10):选择一个随机数r,对第i条明文数据di用对应的第i加密公钥进行加密后生成所述第i加密数据ci:
ci={rg,di rki};
步骤(11):将{ki,ci}的信息上链,便于后续解密数据和验证数据的正确性。
如图4所示,本发明提供一种基于区块链的加密数据分享装置,包括:加密模块401,用于针对第i条明文数据,按照第一加密算法,获得第i首层加密值;根据所述第i首层加密值和至少一个随机盐值,生成所述第i条明文数据的第i加密私钥;其中,任一随机盐值是至少根据主私钥和所述第i条明文数据生成的;至少根据所述第i加密私钥,按照第三加密算法,生成第i加密公钥;至少根据所述第i加密公钥,按照所述第三加密算法,对第i条明文数据加密,获得所述第i加密数据;
数据传输模块402,用于将所述第i加密公钥和所述第i加密数据上传至区块链;所述第i加密公钥用于数据使用方在获取到第i条明文数据后加密,并与所述第i加密数据对比。
可选的,所述至少一个随机盐值为m个随机盐值,m为大于1的整数;所述加密模块401具体用于:
根据所述m个随机盐值中的第k随机盐值和所述第i首层加密值,获得第k私钥分片;
在累计获取m个私钥分片后,根据所述m个私钥分片,按照预设运算,获得第i加密私钥。
可选的,所述加密模块401具体用于:按照第二加密算法,根据所述第k随机盐值和所述第i首层加密值,获得第1嵌套加密值;
从j=1开始,迭代执行c-1次:按照所述第二加密算法,根据第j嵌套加密值和所述第i首层加密值,获得第j 1嵌套加密值;从而获得c-1个嵌套加密值;c为大于2的正整数;
根据c个嵌套加密值,按照所述预设运算,获得所述第k私钥分片;所述c个嵌套加密值包括所述c-1个嵌套加密值和所述第1加密值。
可选的,所述加密模块401具体用于:
根据所述第i条明文数据、所述主私钥和第k标识,生成第k随机数;
根据所述第k随机值,按照所述第一加密算法,获得所述第k随机盐值。
可选的,所述加密模块401具体用于:根据所述第i条明文数据和所述主私钥,按照所述预设运算,获得随机中间结果;
根据第k标识,按照预设随机编码方式,获得第k随机编码;
根据所述随机中间结果和所述第k随机编码,生成所述第k随机数。
可选的,所述预设运算为预设逻辑位运算。
可选的,所述加密模块401具体用于:根据所述第i加密私钥和椭圆曲线的生成元,按照所述第三加密算法,确定所述第i加密公钥;根据所述第i加密公钥、加密随机数和所述生成元,按照所述第三加密算法,对所述第i条明文数据加密,获得所述第i加密数据。
基于同一发明构思,本发明实施例还提供了一种计算机设备,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的基于区块链的加密数据分享方法及任一可选方法被执行。
基于同一发明构思,本发明实施例还提供了一种计算机可读存储介质,包括程序或指令,当所述程序或指令被执行时,如本发明实施例提供的基于区块链的加密数据分享方法及任一可选方法被执行。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
1.一种基于区块链的加密数据分享方法,其特征在于,包括:
针对第i条明文数据,按照第一加密算法,获得第i首层加密值;
根据所述第i首层加密值和至少一个随机盐值,生成所述第i条明文数据的第i加密私钥;其中,任一随机盐值是至少根据主私钥和所述第i条明文数据生成的;
至少根据所述第i加密私钥,按照第三加密算法,生成第i加密公钥;
至少根据所述第i加密公钥,按照所述第三加密算法,对第i条明文数据加密,获得所述第i加密数据;
将所述第i加密公钥和所述第i加密数据上传至区块链;所述第i加密公钥用于数据使用方在获取到第i条明文数据后加密,并与所述第i加密数据对比。
2.如权利要求1所述的方法,其特征在于,所述至少一个随机盐值为m个随机盐值,m为大于1的整数;所述根据所述第i首层加密值和至少一个随机盐值,生成所述第i条明文数据的第i加密私钥,包括:
根据所述m个随机盐值中的第k随机盐值和所述第i首层加密值,获得第k私钥分片;
在累计获取m个私钥分片后,根据所述m个私钥分片,按照预设运算,获得第i加密私钥。
3.如权利要求2所述的方法,其特征在于,所述根据所述m个随机盐值中的第k随机盐值和所述第i首层加密值,获得第k私钥分片,包括:
按照第二加密算法,根据所述第k随机盐值和所述第i首层加密值,获得第1嵌套加密值;
从j=1开始,迭代执行c-1次:按照所述第二加密算法,根据第j嵌套加密值和所述第i首层加密值,获得第j 1嵌套加密值;从而获得c-1个嵌套加密值;c为大于2的正整数;
根据c个嵌套加密值,按照所述预设运算,获得所述第k私钥分片;所述c个嵌套加密值包括所述c-1个嵌套加密值和所述第1加密值。
4.如权利要求2所述的方法,其特征在于,所述第k随机盐值具体按照以下方式获得:
根据所述第i条明文数据、所述主私钥和第k标识,生成第k随机数;
根据所述第k随机值,按照所述第一加密算法,获得所述第k随机盐值。
5.如权利要求4所述的方法,其特征在于,所述根据所述第i条明文数据、所述主私钥和第k标识,生成第k随机数,包括:
根据所述第i条明文数据和所述主私钥,按照所述预设运算,获得随机中间结果;
根据第k标识,按照预设随机编码方式,获得第k随机编码;
根据所述随机中间结果和所述第k随机编码,生成所述第k随机数。
6.如权利要求2所述的方法,其特征在于,所述预设运算为预设逻辑位运算。
7.如权利要求1至6任一项所述的方法,其特征在于,所述至少根据所述第i加密私钥,按照第三加密算法,生成第i加密公钥,包括:
根据所述第i加密私钥和椭圆曲线的生成元,按照所述第三加密算法,确定所述第i加密公钥;
所述至少根据所述第i加密公钥,按照所述第三加密算法,对第i条明文数据加密,获得所述第i加密数据,包括:
根据所述第i加密公钥、加密随机数和所述生成元,按照所述第三加密算法,对所述第i条明文数据加密,获得所述第i加密数据。
8.一种基于区块链的加密数据分享装置,其特征在于,包括:
加密模块,用于针对第i条明文数据,按照第一加密算法,获得第i首层加密值;根据所述第i首层加密值和至少一个随机盐值,生成所述第i条明文数据的第i加密私钥;其中,任一随机盐值是至少根据主私钥和所述第i条明文数据生成的;至少根据所述第i加密私钥,按照第三加密算法,生成第i加密公钥;至少根据所述第i加密公钥,按照所述第三加密算法,对第i条明文数据加密,获得所述第i加密数据;
数据传输模块,用于将所述第i加密公钥和所述第i加密数据上传至区块链;所述第i加密公钥用于数据使用方在获取到第i条明文数据后加密,并与所述第i加密数据对比。
9.一种计算机设备,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至7中任意一项所述的方法被执行。
10.一种计算机可读存储介质,其特征在于,包括程序或指令,当所述程序或指令被执行时,如权利要求1至7中任意一项所述的方法被执行。
技术总结