公开/公告号CN113326023A
专利类型发明专利
公开/公告日2021-08-31
原文格式PDF
申请/专利权人 广州以大坊区块链科技有限公司;
申请/专利号CN202110655880.6
发明设计人 王玲利;
申请日2021-06-11
分类号G06F7/58(20060101);G06F16/27(20190101);
代理机构
代理人
地址 510630 广东省广州市天河区长福路207号首层S3单元
入库时间 2023-06-19 12:24:27
技术领域
本发明涉及区块链技术领域,尤其涉及一种基于区块链哥德巴赫生成随机数的方法。
背景技术
区块链哈希值是区块链区块记录数据的一种算法,叫做哈希算法;哈希算法是一种非对称的加密算法,所谓非对称性:由明文加密容易得到密文,但由密文很难通过该算法得到明文;以哈希算法HA256为例,加密成的密文一共有2
哈希值是由1、0和字母符号组成的256位的二进制字符串,通常显示出的是十六进制的64位字符串;不论是二进制字符串或者十六进制的字符串,其中均包含了大量数据,通过适当变换,可以作为某些问题的数据产生源。
随机数的生成涉及到电子通讯和网络技术的方方面面,验证、抽奖和密码等;目前存在的随机数的生成主要是靠伪随机数生成器来完成的;伪随机数生成器生成随机数的原理为:获取设备的某些参数,再根据数学算法得出随机数;采用该种方法生成的随机数有可能被人为的控制和被黑客获得设备的系统参数,从而掌控随机数生成的规律。
发明内容
为克服以上技术中存在的问题,本发明提供一种基于区块链哥德巴赫生成随机数的方法,该方法包括:
进入区块链,获取指定区块保存的所有数据;
对数据进行随机打乱重排,对重排后的数据进行切割,将数据尽量不均等的切割n份;
求取这n份数据的哈希值,并将各个哈希值进行整数化处理;
将数据中是偶数的部分挑选出来,并将偶数数据进行从小到大的排序为2a、2b、2c…2m,其中a
对排序后的每个偶数进行哥德巴赫拆分,求取每个偶数的素质组成2m=x+y,其中x 根据所求随机数的位数和所求取素数的位数关系,组成随机数; 所述将哈希值整数化处理是指将哈希值转化成十进制整数; 所述哥德巴赫拆分是指哥德巴赫猜想,每个大于等于4的偶数都可以转化成两个素数的和,将上述偶数根据哥德巴赫拆分成两个素数的和; 所述根据所求随机数的位数和所求取素数的位数关系,组成随机数方法为:判断所求取随机数的位数,所有素数的位数,通过两个素数的位数和合成随机数的位数,即合成了随机数。 所述获取指定区块保存的所有数据的方法为:进入区块链的一个区块,提取区块链梅克尔根树,最底层树枝的所有数据;所述梅克尔根树是区块链区块保存数据的一种数据结构。 所述对重排后的数据进行切割的方法,还包括:将重排后的数据进行不均等的切割,切割方式为:根据重排后数据的总的字符数进行不均等的切割,使的切割以后的第一部分数据为A个字符,第二部分数据为2A个字符,第三部分为3A个字符,以此类推,直到把重排后的数据切割完成,把数据共切割成n份。 所述将各个哈希值进行整数化处理的方法为:将所求的n个哈希值先转化为仅有1和0组成的二进制数,再将每个二进制数转化成十进制数;将哈希值转化成二进制数的方法为:将哈希值中的所有符号和字母转化成1,保存原有哈希值中的1和0,这样就得到仅有1和0组成的二进制数;将二进制数转化成十进制数的方法为:按照二进制数转化为十进制数的公式:η=q 所述将每个组成中的x保存下来的方式为:将所有的x按二位数、三位数、四位数和三十八位数进行保存分组。 所述根据所求随机数的位数和所求取素数的位数关系,组成随机数;所述位数关系为:素数组和随机数所包含的位数关系,指随机数的位数等于两个素数位数的和。 所述组成随机数的方法为:将所述随机数的位数等于两个素数位数的和的两个素数按照先后顺序排列组成一个新的数,组成的新的数即为所求随机数。 本发明的有益效果是: 本发明提供了一种基于区块链哥德巴赫生成随机数的方法,该方法的数据源运用区块链的哈希值获得的,获取途径更加安全;利用哥德巴赫猜想拆分数据中的偶数的方式,获得不同位数的素数,通过不同位数的素数可以根据需要组合成指定位数的随机数;因整个过程中重排分割,整数化处理、选取偶数、哥德巴赫猜想将偶数拆分成素数和素数组合成随机数等过程,因此通过该方法获得的随机数将更加随机、安全。 附图说明 图1:区块链哥德巴赫生成随机数的方法流程图; 具体实施方式 以下结合附图对本发明的具体实施例进行详细说明。应该理解的是此处所给出的具体实施例仅用于说明和解释本发明,并不能用来限制本发明。 如图1所示:为本发明的基于区块链哥德巴赫生成随机数的方法流程图;该流程图包括如下步骤:步骤S100,进入区块链,获取指定区块保存的所有数据;步骤S101,对数据进行随机打乱重排,对重排后的数据进行切割,将数据尽量不均等的切割n份;步骤S102,求取这n份数据的哈希值,并将各个哈希值进行整数化处理;步骤S103,将数据中是偶数的部分挑选出来,并将偶数数据进行从小到大的排序为2a、2b、2c…2m,其中a 该生成随机数的方法可以设置一个脚本,将该脚本写入区块链的一段代码;在生成随机数的过程中,激活该代码,生成随机数。 在上述实施例中,步骤S100,所述进入区块链,获取指定区块保存的所有数据,具体地,首先使用者进入区块链,选定区块链中的某个指定区块,提取该区块中的所有数据;所述所有数据指该区块中梅克尔树上的所有最底层树枝所保存的数据,也就是基础数据。 所述梅克尔树指区块链区块保存数据的一种数据结构,该数据结构,基础数据哈希值生成的哈希值作为梅克尔树的最底层树枝;最底层树枝两个依次结合生成新的哈希值,这样就生成数量是原有哈希值一半数量的哈希值,将这些哈希值作为梅克尔树最底层树枝上层的一层树枝,依照这种规则,不断两两迭代,直到最后生成一个哈希值,该哈希值就是梅克尔根值,就组成了由基础数据形成的梅克尔树结构图。 步骤S101,所述对数据进行随机打乱重排,对重排后的数据进行切割,将数据尽量不均等的切割n份;具体地,对步骤S100提取的数据进行随机打乱操作,打乱以后将数据排成一排,计算数据有多少个字符组成;假设数据由w个字符组成,则将w个字符尽量不均等的分成n份的方法为:n份中的第一份数据为A个字符,第二份数据为2A个字符,第三份数据为3A个字符,以此规则,直到最后取到第n份,即把w个字符不均等的分成n份;需要指出的是,在采用这种方法时,需要满足 步骤S102,所述求取这n份数据的哈希值,并将各个哈希值进行整数化处理;具体地,首先将n个哈希值转化成二进制整数,再将二进制整数转化成十进制数; 优选地,将所得到的n个哈希值中的符号和字母全部转化为1,将原有哈希值中的1和0保留,这样每个哈希值均转化为了只有1和0组成的二进制整数,因区块链的哈希值采用HA256算法,所以所得到的二进制整数一共有2 所述将二进制数转化成十进制数,具体地,将n个只有1和0组成的二进制数通过公式:η=q 步骤S103,所述将数据中是偶数的部分挑选出来,并将偶数数据进行从小到大的排序为2a、2b、2c…2m,其中a 步骤S104,所述对排序后的每个偶数进行哥德巴赫拆分,求取每个偶数的素质组成2m=x+y,其中x 优选地,依照哥德巴赫猜想将步骤S103中的偶数按照2m=x+y全部拆分成两个素数的和,其中x和y均为素数,且x 优选地,还包括将上述拆分的每个素数x保存下来,保存时将素数按照位数进行分组,例如,假如素数为:7、19、29、31、71、101和119,则分组情况为:第一组:7,第二组为:19、29、31、71,第三组为:101、119。 步骤S105,根据所求随机数的位数和所求取素数的位数关系,组成随机数,具体地,根据业务需要,需生成指定位数的随机数时,运用步骤S104中分组的素数位数和随机数位数关系生成所需的随机数。 优选地,假设所需生成随机数的位数为6位数字,步骤S104中保存的两位的素数为:13、19、23、79,三位数的素数为:103、109、117、123,四位数素数为:4933、4937、5227、5231,则生成六位数组合可以是二位数中的一个和四位数中的一个组合,或者两个三位数的素数进行组合,例如二位数素数23和四位数素数4937进行组合并按照先后顺序排序为234937,即生成了六位数的随机数;当然也可以是一位数的素数和五位数的素数进行组合,但因为通过哈希值转化为十进制数为个位偶数的概率概率为: 需要理解,上述实施例为本发明的一个具体实施例,而不是所有实施例,并不对本发明造成限制,因此本行业的普通技术人员,基于本发明所做的变形,同等代换,均属于本发明的保护范围。
机译: 一种在区块链智能合约中生成随机数的方法
机译: 基于区块链的随机数生成方法和系统,以及存储介质
机译: 基于区块链的公共随机数生成方法和设备