CN114063981A - 高质量伪随机数的获取方法 - Google Patents
高质量伪随机数的获取方法 Download PDFInfo
- Publication number
- CN114063981A CN114063981A CN202111164601.2A CN202111164601A CN114063981A CN 114063981 A CN114063981 A CN 114063981A CN 202111164601 A CN202111164601 A CN 202111164601A CN 114063981 A CN114063981 A CN 114063981A
- Authority
- CN
- China
- Prior art keywords
- rotor
- vector
- random
- data
- mask
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random or pseudo-random number generators
- G06F7/582—Pseudo-random number generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/16—Matrix or vector computation, e.g. matrix-matrix or matrix-vector multiplication, matrix factorization
Landscapes
- Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- Mathematical Analysis (AREA)
- Computational Mathematics (AREA)
- Mathematical Physics (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Algebra (AREA)
- Databases & Information Systems (AREA)
- Software Systems (AREA)
- Tests Of Electronic Circuits (AREA)
Abstract
本发明公开了一种高质量伪随机数的获取方法,本方法将传入的随机种子赋给初始的数据集合作为初值,根据递推式递推求出基础的算法元素链;对元素链进行旋转操作处理,对旋转后的元素链的每个集合元素进行遍历,提取输出原始的随机元素集合;在随机元素集合中按原有的随机元素间隔输出伪随机数。本方法克服传统伪随机数获取的缺陷,用于在应用开发中获取随机算法的调用,生成质量更高的伪随机数,有效避免从一段序列猜测出伪随机数发生器的工作状态或者下一个伪随机数,杜绝系统漏洞,确保系统的稳定、可靠应用。
Description
技术领域
本发明涉及计算机及信息服务技术领域,尤其涉及一种高质量伪随机数的获取方法。
背景技术
目前在互联网商业应用中,会遇到很多使用到数学随机数据的场景。例如, 用户参与的抽奖活动,为了安全而随机生成的握手令牌,计算单项加密算法器中的算法器进行混淆,如对MD5的散列进行混淆。
在现有的获取伪随机数的算法中,大多获取伪随机数的算法还是Math的randrom方法(Java.utils.Random),即使用一个散列的种子,套用一个线性的同余公式修改它,该方法生成伪随机数。所以如果针对一个摇奖平台,只要种子确定后,每次产生的序列都一样。这样就可利用这个漏洞来预测下一次开奖的号码,如此容易导致有失公正,并且在使用转子抽奖算法时,中奖率会集中在一定的区域内。
发明内容
本发明所要解决的技术问题是提供一种高质量伪随机数的获取方法,本方法克服传统伪随机数获取的缺陷,用于在应用开发中获取伪随机算法的调用, 生成质量更高的伪随机数,有效避免从一段序列猜测出伪随机数发生器的工作状态或者下一个伪随机数,杜绝系统漏洞,确保系统的稳定、可靠应用。
为解决上述技术问题,本发明高质量伪随机数的获取方法包括如下步骤:
步骤一、获取基础的算法元素链,将传入的随机种子赋给初始的数据集合作为初值,根据递推式(1),递推求出元素链,
其中,MT[i]为第i个随机序列元素,f为初始化元素链所需旋转参数,w 为数位长度,i为元素链的位数;
步骤二、根据递推式(2)对元素链进行旋转处理,
其中,m为周期参数,upper_mask为高位掩码,lower_mask为低位掩码, A表示w×w的常规矩阵;
步骤三、对旋转后的元素链的每个集合元素进行遍历,提取输出原始的随机元素集合;
步骤四、在随机元素集合中按原有的随机元素间隔输出伪随机数。
进一步,所述步骤一中,将传入的随机种子赋值给元素链的第0个状态作为初值,然后根据递推式(1)递推求出元素链上的元素值,剩余的每个元素状态则用前一状态值的旋转处理结果进行赋值更新。
进一步,所述步骤二中,元素链整个旋转过程由位运算组成,包括移位、按位与、按位或、按位异或。
进一步,所述元素链旋转采用四级反馈移位寄存器,每次对元素链的二进制序列从后往前的第四位数和第二位数做异或运算,然后再将结果与最后一位数做异或运算,将最后的运算结果放到二进制序列的开头,整个二进制序列后移一位,最后一位数舍弃。
进一步,所述步骤三中,提取输出原始的随机元素集合是将元素链每次旋转得到的输出右乘一个可逆矩阵T,
其中,A为常规矩阵,A*为A的跟随矩阵,
将可逆矩阵T生成位运算,生成下列公式:
其中,向量y等价于向量X异或,向量X位移u常数,u是整数常数,位移运算的移动距离,即参与旋转的伪随机数个数结合[0,w)之间的整数常数;
其中,向量y等价于向量y异或,向量y左移s位与向量b,s是位移寄存器的位移量,b是位移寄存器掩码;
其中,向量y等价于向量y异或,向量y左移t位与向量c,t是位移寄存器的位移量,c是位移寄存器掩码;
进一步,所述步骤四中,在随机元素集合中按原有的随机元素间隔输出伪随机数采用旋转体转子处理数据的方式输出间隔的数目,配备三个旋转体转子并分别设置初始向量值为2、3、5,每个旋转体转子的刻度是十进制的0到5, 设定输入第一个数据是0并进入了第一转子,由于第一转子设定的初始向量值是2,在经过第一转子后输出的数值是2,数据进入第二转子,由于第二转子向量值是3,将数据输入到第三转子的刻度3,数据进入第三转子后,根据第三转子的向量值,移动至刻度5,数据则为5;当第三转子处理结束后,返回结果,第三转子处的数据由于是5,输出到第二转子时,由第三转子的刻度2返回数据,到第二转子时,返回到第二转子的刻度0,此时数据为0,当第二转子返回数据到第一转子时,第一转子中数据0会被转移至刻度4,得到输出结果为4,同时每加密一个输出结果,各转子自动转动一格,从而获得输出间隔的不确定性。
进一步,根据各旋转体转子的向量设置对元素状态结果进行异或位移操作,各旋转体转子完成异或位移操作后的元素状态结果分别为:
e^=e>>2
e^=e<<3
e^=e>>5
其中,e是各旋转体转子的输入值,同时也是输出转子的值,2、3、5分别是各旋转体转子设定的初始系数,^为异或运算符,>>、<<为位移运算符,
元素状态结果进行异或位移操作后再进行哈西加密处理,以保证输出的安全。
由于本发明高质量伪随机数的获取方法采用了上述技术方案,即本方法将传入的随机种子赋给初始的数据集合作为初值,根据递推式递推求出基础的算法元素链;对元素链进行旋转操作处理,对旋转后的元素链的每个集合元素进行遍历,提取输出原始的随机元素集合;在随机元素集合中按原有的随机元素间隔输出伪随机数。本方法克服传统伪随机数获取的缺陷,用于在应用开发中获取随机算法的调用,生成质量更高的伪随机数,有效避免从一段序列猜测出伪随机数发生器的工作状态或者下一个伪随机数,杜绝系统漏洞,确保系统的稳定、可靠应用。
附图说明
下面结合附图和实施方式对本发明作进一步的详细说明:
图1为本发明高质量伪随机数的获取方法的原理框图;
图2为本方法中元素链旋转采用四级反馈移位寄存器操作的框图;
图3为本方法中采用旋转体转子处理数据的输入/输出流程图;
图4为本方法中元素状态结果操作示意图。
具体实施方式
实施例如图1所示,本发明高质量伪随机数的获取方法包括如下步骤:
步骤一、获取基础的算法元素链,将传入的随机种子赋给初始的数据集合作为初值,根据递推式(1),递推求出元素链,
其中,MT[i]为第i个随机序列元素,f为初始化元素链所需旋转参数,其取值理论上是0<f<2^19937,在实际的移位寄存器中为定值6364136223846793005,w为数位长度,i为元素链的位数;
步骤二、根据递推式(2)对元素链进行旋转处理,
其中,m为周期参数,即递归长度除2,也就是周期因子/寄存器位数,为 19937/64/2=156,upper_mask为高位掩码,lower_mask为低位掩码,A表示w ×w的常规矩阵;
递推式(2)中MT是一个周期性为P(P的周期是219937-1)的w的随机序列元素链,w是数位长度,单位是bit,默认64,i元素链的位数从0位开始, f初始化元素链所需参数,MT[i]第i个随机序列元素,每一个MT[i]是一个长度为64的行向量,并且每一个元素都是二元数域中的元素;
步骤三、对旋转后的元素链的每个集合元素进行遍历,提取输出原始的随机元素集合;
步骤四、在随机元素集合中按原有的随机元素间隔输出伪随机数。
优选的,所述步骤一中,将传入的随机种子赋值给元素链的第0个状态作为初值,然后根据递推式(1)递推求出元素链上的元素值,剩余的每个元素状态则用前一状态值的旋转处理结果进行赋值更新,旋转处理按上述步骤二的式(2)进行。
优选的,所述步骤二中,元素链整个旋转过程由位运算组成,包括移位、按位与、按位或、按位异或。
优选的,如图2所示,所述元素链旋转采用四级反馈移位寄存器,每次对元素链的二进制序列从后往前的第四位数和第二位数做异或运算,然后再将结果与最后一位数做异或运算,将最后的运算结果放到二进制序列的开头,整个二进制序列后移一位,最后一位数舍弃。
优选的,所述步骤三中,提取输出原始的随机元素集合是将元素链每次旋转得到的输出右乘一个可逆矩阵T,
其中,A为常规矩阵,A*为A的跟随矩阵,
将可逆矩阵T生成位运算,生成下列公式:
其中,向量y等价于向量X异或,此为必要非充分条件,向量X位移u常数,u是整数常数,位移运算的移动距离,即参与旋转的伪随机数个数结合[0,w) 之间的整数常数;
其中,向量y等价于向量y异或,此为必要非充分条件,向量y左移s位与向量b,s是位移寄存器的位移量,b是位移寄存器掩码;
其中,向量y等价于向量y异或,此为必要非充分条件,向量y左移t位与向量c,t是位移寄存器的位移量,c是位移寄存器掩码;
优选的,如图3所示,所述步骤四中,在随机元素集合中按原有的随机元素间隔输出伪随机数采用旋转体转子处理数据的方式输出间隔的数目,配备三个旋转体转子并分别设置初始向量值为2、3、5,每个旋转体转子的刻度是十进制的0到5,设定输入第一个数据是0并进入了第一转子,由于第一转子设定的初始向量值是2,在经过第一转子后输出的数值是2,数据进入第二转子,由于第二转子向量值是3,将数据输入到第三转子的刻度3,数据进入第三转子后,根据第三转子的向量值,移动至刻度5,数据则为5;当第三转子处理结束后,返回结果,第三转子处的数据由于是5,输出到第二转子时,由第三转子的刻度 2返回数据,到第二转子时,返回到第二转子的刻度0,此时数据为0,当第二转子返回数据到第一转子时,第一转子中数据0会被转移至刻度4,得到输出结果为4,同时每加密一个输出结果,各转子自动转动一格,从而获得输出间隔的不确定性。
优选的,如图4所示,根据各旋转体转子的向量设置对元素状态结果进行异或位移操作,各旋转体转子完成异或位移操作后的元素状态结果分别为:
e^=e>>2
e^=e<<3
e^=e>>5
其中,e是各旋转体转子的输入值,同时也是输出转子的值,2、3、5分别是各旋转体转子设定的初始系数,^为异或运算符,>>、<<为位移运算符,
元素状态结果进行异或位移操作后再进行哈西加密处理,以保证输出的安全。
元素状态结果进行异或位移操作及哈西加密处理后,使之不能轻易的逆向爆破该算法,当更新当前第i个元素状态时必须要用到第i+1个元素状态以及第i+n个元素状态。因此如图3所示,假设将元素状态每隔一个进行处理输出为伪随机数,则即使敌手获取到大量的间隔伪随机数,并且将他们逆向恢复为算法的内部状态,也无法得到完整的312状态。若没有完整的312个状态位,则也就无法继续预测生成接下去的伪随机数。
采用本方法获取伪随机数的过程中相同序列的概率非常低,且符合统计学的平均性,例如所有数字出现概率应该相同,应能通过卡方检验,超长游程长度概略应该非常小,自相关应该只有一个尖峰,任何长度的同一数字之后,其他数字出现的概率应该仍然是相等。不能从一段序列猜测出伪随机数发生器的工作状态或者下一个伪随机数,也不能从伪随机数发生器的状态能猜测出伪随机数发生器以前的工作状态。
根据评价伪随机数发生器指标k-维v-比特准确度,本方法在梅森旋转的基础上加长了周期,使它的周期非常长。其周期P=219937?1,要比预估的宇宙可观测的粒子总数(1087)还要高出数千个数量级。其次,作为一个64比特伪随机数生成器,本方法是312-维64-比特准确的。考虑到?1993764?=311,本方法在k-维v-比特准确度上的性能已达到理论上的最大值。因此,本方法具有非常优良的性能。
Claims (7)
1.一种高质量伪随机数的获取方法,其特征在于本方法包括如下步骤:
步骤一、获取基础的算法元素链,将传入的随机种子赋给初始的数据集合作为初值,根据递推式(1),递推求出元素链,
MT[i]=f×(MT[i-1]⊕(MT[i-1]>>(w-2)))+i (1)
其中,MT[i]为第i个随机序列元素,f为初始化元素链所需旋转参数,w为数位长度,i为元素链的位数;
步骤二、根据递推式(2)对元素链进行旋转处理,
MT[i]=MT[i+m]⊕((upper_mask(MT[i])||lower_mask(MT[i+1]))A) (2)
其中,m为周期参数,upper_mask为高位掩码,lower_mask为低位掩码,A表示w×w的常规矩阵;
步骤三、对旋转后的元素链的每个集合元素进行遍历,提取输出原始的随机元素集合;
步骤四、在随机元素集合中按原有的随机元素间隔输出伪随机数。
2.根据权利要求1所述的高质量伪随机数的获取方法,其特征在于:所述步骤一中,将传入的随机种子赋值给元素链的第0个状态作为初值,然后根据递推式(1)递推求出元素链上的元素值,剩余的每个元素状态则用前一状态值的旋转处理结果进行赋值更新。
3.根据权利要求1所述的高质量伪随机数的获取方法,其特征在于:所述步骤二中,元素链整个旋转过程由位运算组成,包括按位移位、按位与、按位或、按位异或。
4.根据权利要求3所述的高质量伪随机数的获取方法,其特征在于:所述元素链旋转采用四级反馈移位寄存器,每次对元素链的二进制序列从后往前的第四位数和第二位数做异或运算,然后再将结果与最后一位数做异或运算,将最后的运算结果放到二进制序列的开头,整个二进制序列后移一位,最后一位数舍弃。
5.根据权利要求1所述的高质量伪随机数的获取方法,其特征在于:所述步骤三中,提取输出原始的随机元素集合是将元素链每次旋转得到的输出右乘一个可逆矩阵T,
其中,A为常规矩阵,A*为A的跟随矩阵,
将可逆矩阵T生成位运算,生成下列公式:
其中,向量y等价于向量X异或,向量X位移u常数,u是整数常数,位移运算的移动距离,即参与旋转的伪随机数个数结合[0,w)之间的整数常数;
其中,向量y等价于向量y异或,向量y左移s位与向量b,s是位移寄存器的位移量,b是位移寄存器掩码;
其中,向量y等价于向量y异或,向量y左移t位与向量c,t是位移寄存器的位移量,c是位移寄存器掩码;
6.根据权利要求1所述的高质量伪随机数的获取方法,其特征在于:所述步骤四中,在随机元素集合中按原有的随机元素间隔输出伪随机数采用旋转体转子处理数据的方式输出间隔的数目,配备三个旋转体转子并分别设置初始向量值为2、3、5,每个旋转体转子的刻度是十进制的0到5,设定输入第一个数据是0并进入了第一转子,由于第一转子设定的初始向量值是2,在经过第一转子后输出的数值是2,数据进入第二转子,由于第二转子向量值是3,将数据输入到第三转子的刻度3,数据进入第三转子后,根据第三转子的向量值,移动至刻度5,数据则为5;当第三转子处理结束后,返回结果,第三转子处的数据由于是5,输出到第二转子时,由第三转子的刻度2返回数据,到第二转子时,返回到第二转子的刻度0,此时数据为0,当第二转子返回数据到第一转子时,第一转子中数据0会被转移至刻度4,得到输出结果为4,同时每加密一个输出结果,各转子自动转动一格,从而获得输出间隔的不确定性。
7.根据权利要求6所述的高质量伪随机数的获取方法,其特征在于:根据各旋转体转子的向量设置对元素状态结果进行异或位移操作,各旋转体转子完成异或位移操作后的元素状态结果分别为:
e^=e>>2
e^=e<<3
e^=e>>5
其中,e是各旋转体转子的输入值,同时也是输出转子的值,2、3、5分别是各旋转体转子设定的初始系数,^为异或运算符,>>、<<为位移运算符,
元素状态结果进行异或位移操作后再进行哈西加密处理,以保证输出的安全。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111164601.2A CN114063981A (zh) | 2021-09-30 | 2021-09-30 | 高质量伪随机数的获取方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111164601.2A CN114063981A (zh) | 2021-09-30 | 2021-09-30 | 高质量伪随机数的获取方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN114063981A true CN114063981A (zh) | 2022-02-18 |
Family
ID=80234113
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111164601.2A Pending CN114063981A (zh) | 2021-09-30 | 2021-09-30 | 高质量伪随机数的获取方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114063981A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115223065A (zh) * | 2022-07-25 | 2022-10-21 | 中国人民解放军陆军航空兵学院 | 一种基于高精度定位复盘分析空突地面装备机动能力的方法 |
-
2021
- 2021-09-30 CN CN202111164601.2A patent/CN114063981A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115223065A (zh) * | 2022-07-25 | 2022-10-21 | 中国人民解放军陆军航空兵学院 | 一种基于高精度定位复盘分析空突地面装备机动能力的方法 |
CN115223065B (zh) * | 2022-07-25 | 2023-04-07 | 中国人民解放军陆军航空兵学院 | 一种基于高精度定位复盘分析空突地面装备机动能力的方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8320557B2 (en) | Cryptographic system including a mixed radix number generator with chosen statistical artifacts | |
CA2633923C (en) | Mixed radix number generator with chosen statistical artifacts | |
Chen et al. | Randomness enhancement using digitalized modified logistic map | |
US10078493B2 (en) | Secured pseudo-random number generator | |
François et al. | A fast chaos-based pseudo-random bit generator using binary64 floating-point arithmetic | |
US8788552B2 (en) | Deterministic random number generator for cryptography and digital watermarking | |
Janke | Pseudo random numbers: Generation and quality checks | |
AL-khatib et al. | Acoustic lightweight pseudo random number generator based on cryptographically secure LFSR | |
Feng et al. | Testing randomness using artificial neural network | |
CN114063981A (zh) | 高质量伪随机数的获取方法 | |
JP4970287B2 (ja) | 擬似ランダム・データ・シーケンスを発生するための方法、システム及び装置 | |
CN111142843B (zh) | 一种基于混沌的计算机随机数生成系统及方法 | |
François et al. | A pseudo-random bit generator using three chaotic logistic maps | |
Oravec et al. | A chaotic image encryption algorithm robust against the phase space reconstruction attacks | |
Dieter | Statistical interdependence of pseudo-random numbers generated by the linear congruential method | |
Easttom | Random Number Generators | |
El Den et al. | An Enhanced Pseudorandom Number Generator Based Differential Lorenz system by using Runge-Kutta method | |
Fu et al. | A color image encryption algorithm using a new 1-D chaotic map | |
CN116301721B (zh) | 一种随机数生成方法、装置、电子设备及介质 | |
Aljahdali | Random Number Generators Survey | |
CN111638866A (zh) | 随机数生成方法、装置、设备及存储介质 | |
Bhardwaj | A dissection of pseudorandom number generators | |
RU2246129C2 (ru) | Способ генерации случайных чисел | |
Bhattacharjee et al. | Cellular Automaton-Based Emulation of the Mersenne Twister. | |
Alioto et al. | On the suitability of digital maps for integrated pseudo-RNGs |
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 |