CN107368283B - 一种真随机数生成方法 - Google Patents
一种真随机数生成方法 Download PDFInfo
- Publication number
- CN107368283B CN107368283B CN201710601779.6A CN201710601779A CN107368283B CN 107368283 B CN107368283 B CN 107368283B CN 201710601779 A CN201710601779 A CN 201710601779A CN 107368283 B CN107368283 B CN 107368283B
- Authority
- CN
- China
- Prior art keywords
- module
- event
- generation
- execution
- processing module
- 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.)
- Active
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/588—Random number generators, i.e. based on natural stochastic processes
Landscapes
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computational Mathematics (AREA)
- Mathematical Analysis (AREA)
- Mathematical Optimization (AREA)
- Pure & Applied Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Devices For Executing Special Programs (AREA)
- Debugging And Monitoring (AREA)
Abstract
一种真随机数生成方法,用到一种生成装置,生成装置包括随机***和生成***;随机***包括闭环连接的处理模块、事件执行模块和计时模块,生成***包括闭环连接的数值拆分模块、0/1生成模块和存储模块,其中数值拆分模块和0/1生成模块均与处理模块相连接。本发明提供一种真随机数生成方法,引入外部随机事件执行装置,确保随机数生成过程完全是随机的,从而生成真随机数。
Description
技术领域
本发明涉及随机数生成技术领域,具体的说是一种真随机数生成方法。
背景技术
目前,为了完成某些特定的任务或实现特定的功能,一些应用程序在运行的过程中需要生成随机数。例如,某些应用程序为了降低恶意访问用户身份的风险,在用户身份验证时需要生成动态的随机密码或随机验证码提供给用户,这些随机密码和随机验证码需要由随机数来确定。又如,为了更好地贴合现实场景,对于现实场景中某些随机出现的资源,某些应用程序在用户使用时也需要随机提供这些资源,这些资源的种类、数量等需要由生成的随机数来确定。
现有技术中,生成随机数大都是利用软件算法进行生成,目前主流的计算机软件开发语言都提供有生成随机数的方法,例如C语言的程序开发中,普遍使用的是基于rand()方法获得的随机数,然而rand()方法获得的随机数存在序列固定的问题,即对于某一时刻的随机数,其下一次调用rand()方法生成的随机数是固定并且与上一时刻的随机数是关联的,使用其他地软件语言也有同样的问题存在,目前的已有的解决方案是在使用随机数生成命令之前将随机数生成命令内部的随机因子打乱,打乱的方式是将随机因子赋为当前的***时间,来保证生成结果的随机性。而该方法的弊端在于如果在生成随机数频率非常高的情况下,可能出现由于时间度量单位不够小出现的多个基于时间的随机因子一样的情况,该情况会导致生成的随机数一样。
发明内容
为了解决现有技术中的不足,本发明提供一种真随机数生成方法,引入外部随机事件执行装置,确保随机数生成过程完全是随机的,从而生成真随机数。
为了实现上述目的,本发明采用的具体方案为:
一种真随机数生成方法,用到一种生成装置,生成装置包括随机***和生成***;随机***包括闭环连接的处理模块、事件执行模块和计时模块,生成***包括闭环连接的数值拆分模块、0/1生成模块和存储模块,其中数值拆分模块和0/1生成模块均与处理模块相连接;具体的生成步骤如下:
S1、数值拆分模块根据随机数的上界B1和下界B2计算界差B,B=B1-B2;
S3、数值拆分模块将k0、k1、k2、……、kn传输给0/1生成模块,0/1生成模块生成(n+1)个存储区,每个存储区分别有(k0+1)、(k1+1)、(k2+1)、……、(kn+1)个数位,存储区生成完毕后向存储模块申请(n+1)个内存地址块,记为Address0,Address1,Address2,……,Addressn;其中Address0大小为k0个字节,Address1大小为k1个字节,依次类推;
S4、数值拆分模块传输给处理模块一个临界值L生成信号;
S5、处理模块接受到临界值L生成信号后开始生成临界值L,具体的生成步骤包括:
T1、处理模块提出一个事件E并设定执行次数,然后将事件E和执行次数传输给事件执行模块;
T2、事件执行模块接收到处理模块提出的事件E并按执行次数逐次执行;
T3、处理模块利用计时模块采集事件执行模块每次执行事件E消耗的时间;
T4、处理模块计算所有执行时间的均值,该均值即为临界值L;
S6、处理模块将生成的临界值L传输给数值拆分模块;
S7、数值拆分模块给处理模块传输一个临界值L生成信号和叠加参数T,同时将临界值L传输给0/1生成模块;
S8、处理模块接收到随机量生成信号后将所述事件E传输给事件执行模块并设定执行次数为T;
S9、事件执行模块执行T次事件E,并返回给处理模块T个执行时间t;
S10、处理模块将T个执行时间t传输给0/1生成模块,0/1生成模块将执行时间t和临界值L进行对比,根据对比结果产生一个0或1,具体步骤包括:
P1、0/1生成模块将执行时间t和临界值L相比较,如果执行时间t大于临界值L,则输出1,否则输出0;
P2、0/1生成模块将生成的0或1传输给存储模块;
S11、存储模块根据S3中生成的内存地址块,对于每一个内存地址块进行以下操作:
Q1、对于内存地址块中的每一个字节Bi,
Q2、使用0/1生成模块传输过来的0或1依次替换Bi,使每个内存地址块内存储一个二进制数;
S12、数值拆分模块读取内存地址块Address0,Address1,Address2,……,Addressn中的二进制数,并将其转化为十进制数值,对应为D0,D1,D2,……,Dn;
S13、数值拆分模块将D0,D1,D2,……,Dn求和记为D,计算D和B的余数C,将C+B2作为结果并输出。
优选地,所述步骤T3中,计时模块采集事件执行模块每次执行事件E消耗的时间的具体步骤为:
M1、处理模块首先利用计时模块获得当前时间T1,
M2、处理模块将事件E交付为事件执行模块,等待其运行完成,
M3、事件执行模块完成事件E后,处理模块从计时模块中获得当前时间T2,
M4、将T2和T1相减,获得时间差T3,时间差T3即为事件执行模块单次执行事件E消耗的时间。
有益效果:本发明引入外部随机事件发生装置,根据随机事件发生的概率对应生成0或1,进而合并成若干位的二进制数,从而确保能够在完全随机的条件下生成真随机数,而且根据使用环境不同,能够灵活选择不同的随机***,以满足不同的使用需求。
附图说明
图1是生成装置示意图。
具体实施方式
下面根据附图具体说明本发明的实施方式。
一种真随机数生成方法,用到如图1所示的一种生成装置,生成装置包括随机***和生成***;随机***包括闭环连接的处理模块、事件执行模块和计时模块,生成***包括闭环连接的数值拆分模块、0/1生成模块和存储模块,其中数值拆分模块和0/1生成模块均与处理模块相连接;具体的生成步骤如下:
S1、数值拆分模块根据随机数的上界B1和下界B2计算界差B,B=B1-B2;
S3、数值拆分模块将k0、k1、k2、……、kn传输给0/1生成模块,0/1生成模块生成(n+1)个存储区,每个存储区分别有(k0+1)、(k1+1)、(k2+1)、……、(kn+1)个数位,存储区生成完毕后向存储模块申请(n+1)个内存地址块,记为Address0,Address1,Address2,……,Addressn;其中Address0大小为k0个字节,Address1大小为k1个字节,依次类推;
S4、数值拆分模块传输给处理模块一个临界值L生成信号;
S5、处理模块接受到临界值L生成信号后开始生成临界值L,具体的生成步骤包括:
T1、处理模块提出一个事件E并设定执行次数,然后将事件E和执行次数传输给事件执行模块;
T2、事件执行模块接收到处理模块提出的事件E并按执行次数逐次执行;
T3、处理模块利用计时模块采集事件执行模块每次执行事件E消耗的时间;
T4、处理模块计算所有执行时间的均值,该均值即为临界值L;
S6、处理模块将生成的临界值L传输给数值拆分模块;
S7、数值拆分模块给处理模块传输一个临界值L生成信号和叠加参数T,同时将临界值L传输给0/1生成模块;
S8、处理模块接收到随机量生成信号后将所述事件E传输给事件执行模块并设定执行次数为T;
S9、事件执行模块执行T次事件E,并返回给处理模块T个执行时间t;
S10、处理模块将T个执行时间t传输给0/1生成模块,0/1生成模块将执行时间t和临界值L进行对比,根据对比结果产生一个0或1,具体步骤包括:
P1、0/1生成模块将执行时间t和临界值L相比较,如果执行时间t大于临界值L,则输出1,否则输出0;
P2、0/1生成模块将生成的0或1传输给存储模块;
S11、存储模块根据S3中生成的内存地址块,对于每一个内存地址块进行以下操作:
Q1、对于内存地址块中的每一个字节Bi,
Q2、使用0/1生成模块传输过来的0或1依次替换Bi,使每个内存地址块内存储一个二进制数;
S12、数值拆分模块读取内存地址块Address0,Address1,Address2,……,Addressn中的二进制数,并将其转化为十进制数值,对应为D0,D1,D2,……,Dn;
S13、数值拆分模块将D0,D1,D2,……,Dn求和记为D,计算D和B的余数C,将C+B2作为结果并输出。
优选地,所述步骤T3中,计时模块采集事件执行模块每次执行事件E消耗的时间的具体步骤为:
M1、处理模块首先利用计时模块获得当前时间T1,
M2、处理模块将事件E交付为事件执行模块,等待其运行完成,
M3、事件执行模块完成事件E后,处理模块从计时模块中获得当前时间T2,
M4、将T2和T1相减,获得时间差T3,时间差T3即为事件执行模块单次执行事件E消耗的时间。
优选地,处理模块、0/1生成模块和数值拆分模块均为8086单片机,为方便叙述,处理模块记为第一8086单片机,0/1生成模块记为第二8086单片机,数值拆分模块记为第三8086单片机;事件执行模块包括脉冲发射器和脉冲接收器;计时模块为微控制器LPC54100;存储模块为6264内存。
以生成1-45之间的随机数为例,具体的生成步骤如下:
S1、第三8086单片机的8086单片机通过I/O接口接收到随机数的上界B1=45和下界B2=1,然后计算界差B=B1-B2=44;
S2、第三8086单片机对B进行拆分,有44=22+23+25,并计算叠加参数T=2+3+5+(2+1)=13;
S3、第三8086单片机将2、3、5传输给第二8086单片机,第二8086单片机生成三个存储区,每个存储区分别有3、4、6个数位,存储区生成完毕后向6264内存申请三个内存地址块,记为
Address0,Address1,Address2;其中Address0大小为3个字节,Address1大小为4个字节,Address2为6和字节;
S4、第三8086单片机传输给第一8086单片机一个临界值L生成信号;
S5、第一8086单片机接受到临界值L生成信号后开始生成临界值L,具体的生成步骤包括:
T1、第一8086单片机提出一个事件E并设定执行次数,然后将事件E和执行次数传输给事件执行模块,设定事件E为由脉冲发射器发射一个脉冲信号并由脉冲接收器接收该脉冲信号,执行次数为100次;
T2、事件执行模块接收到第一8086单片机提出的事件E并由脉冲发射器和脉冲接收器配合执行100次;
T3、第一8086单片机利用微处理器LPC54110采集事件执行模块每次执行事件E消耗的时间具体的过程为在脉冲发射器发射脉冲信号时第一8086单片机读取微处理器LPC54110的CPU时钟T1并存入到6264内存中,脉冲接收器接受到脉冲信号时第一8086单片机读取微处理器LPC54110的CPU时钟T2并存入到6264内存中,然后第一8086单片机计算T3=T2-T1即得到事件执行模块单次执行事件E所用的时间,可以看出计时模块返回给第一8086单片机的是CPU时钟,因此计时模块的CPU时钟频率越高越好,这里计时模块选用双核心的微处理器LPC54110,在其他的实施方式中可以有其他频率更高的处理器替代;
T4、第一8086单片机计算所有执行时间的均值,该均值即为临界值L;
S6、第一8086单片机将生成的临界值L传输给第三8086单片机;
S7、第三8086单片机给第一8086单片机传输一个临界值L生成信号和叠加参数T,同时将临界值L传输给第二8086单片机;
S8、第一8086单片机接收到随机量生成信号后将所述事件E传输给事件执行模块并设定执行次数为T;
S9、事件执行模块执行T次事件E;
S10、第二8086单片机根据每次执行事件E的时间和临界值L,产生一个0或1,具体步骤包括:
P1、第二8086单片机将执行时间t和临界值L相比较,如果执行时间t大于临界值L,则输出1,否则输出0;
P2、第二8086单片机将生成的0或1传输给6264内存,假定最终传输给6264内存的0或1依次是1011100110101;
S11、6264内存根据S3中生成的内存地址块,对于每一个内存地址块进行以下操作:
Q1、对于内存地址块中的每一个字节Bi,
Q2、使用第二8086单片机传输过来的0或1依次替换Bi,使每个内存地址块内存储一个二进制数,三个内存地址块内的二进制数分别是101、1100、110101;
S12、第三8086单片机读取内存地址块Address0,Address1,Address2中的二进制数,并将其转化为十进制数值,对应为D0,D1,D2,值分别是5、12和53,
S13、第三8086单片机将D0,D1,D2求和记为D=70,计算D和B的余数C=26,将C+B2=26+1=27作为结果并输出。
以上实施例仅用以说明而非限定本发明的技术方案,尽管参照上述实施例对本发明进行了详细说明,本领域的普通技术人员应当理解;依然可以对本发明进行修改或者等同替换,而不脱离本发明的精神和范围的任何修改或局部替换,其均应涵盖在本发明的权利要求范围当中。
Claims (2)
1.一种真随机数生成方法,其特征在于:用到一种生成装置,生成装置包括随机***和生成***;随机***包括闭环连接的处理模块、事件执行模块和计时模块,生成***包括闭环连接的数值拆分模块、0/1生成模块和存储模块,其中数值拆分模块和0/1生成模块均与处理模块相连接;具体的生成步骤如下:
S1、数值拆分模块根据随机数的上界B1和下界B2计算界差B,B=B1-B2;
S3、数值拆分模块将k0、k1、k2、……、kn传输给0/1生成模块,0/1生成模块生成(n+1)个存储区,每个存储区分别有(k0+1)、(k1+1)、(k2+1)、……、(kn+1)个数位,存储区生成完毕后向存储模块申请(n+1)个内存地址块,记为Address0,Address1,Address2,……,Addressn;其中Address0大小为k0个字节,Address1大小为k1个字节,依次类推;
S4、数值拆分模块传输给处理模块一个临界值L生成信号;
S5、处理模块接受到临界值L生成信号后开始生成临界值L,具体的生成步骤包括:
T1、处理模块提出一个事件E并设定执行次数,然后将事件E和执行次数传输给事件执行模块;
T2、事件执行模块接收到处理模块提出的事件E并按执行次数逐次执行;
T3、处理模块利用计时模块采集事件执行模块每次执行事件E消耗的时间;
T4、处理模块计算所有执行时间的均值,该均值即为临界值L;
S6、处理模块将生成的临界值L传输给数值拆分模块;
S7、数值拆分模块给处理模块传输一个临界值L生成信号和叠加参数T,同时将临界值L传输给0/1生成模块;
S8、处理模块接收到随机量生成信号后将所述事件E传输给事件执行模块并设定执行次数为T;
S9、事件执行模块执行T次事件E,并返回给处理模块T个执行时间t;
S10、处理模块将T个执行时间t传输给0/1生成模块,0/1生成模块将执行时间t和临界值L进行对比,根据对比结果产生一个0或1,具体步骤包括:
P1、0/1生成模块将执行时间t和临界值L相比较,如果执行时间t大于临界值L,则输出1,否则输出0;
P2、0/1生成模块将生成的0或1传输给存储模块;
S11、存储模块根据S3中生成的内存地址块,对于每一个内存地址块进行以下操作:
Q1、对于内存地址块中的每一个字节Bi,
Q2、使用0/1生成模块传输过来的0或1依次替换Bi,使每个内存地址块内存储一个二进制数;
S12、数值拆分模块读取内存地址块Address0,Address1,Address2,……,Addressn中的二进制数,并将其转化为十进制数值,对应为D0,D1,D2,……,Dn;
S13、数值拆分模块将D0,D1,D2,……,Dn求和记为D,计算D和B的余数C,将C+B2作为结果并输出。
2.如权利要求1所述的一种真随机数生成方法,其特征在于:所述步骤T3中,计时模块采集事件执行模块每次执行事件E消耗的时间的具体步骤为:
M1、处理模块首先利用计时模块获得当前时间T1,
M2、处理模块将事件E交付为事件执行模块,等待其运行完成,
M3、事件执行模块完成事件E后,处理模块从计时模块中获得当前时间T2,
M4、将T2和T1相减,获得时间差T3,时间差T3即为事件执行模块单次执行事件E消耗的时间。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710601779.6A CN107368283B (zh) | 2017-07-21 | 2017-07-21 | 一种真随机数生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710601779.6A CN107368283B (zh) | 2017-07-21 | 2017-07-21 | 一种真随机数生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107368283A CN107368283A (zh) | 2017-11-21 |
CN107368283B true CN107368283B (zh) | 2020-07-03 |
Family
ID=60307194
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710601779.6A Active CN107368283B (zh) | 2017-07-21 | 2017-07-21 | 一种真随机数生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107368283B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108959968B (zh) * | 2018-07-23 | 2020-11-17 | 北京车和家信息技术有限公司 | 随机数序列生成方法及装置、车辆和存储介质 |
CN109634560B (zh) * | 2018-12-13 | 2020-09-22 | 泰康保险集团股份有限公司 | 随机数生成方法、装置及存储介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7660944B2 (en) * | 2006-07-24 | 2010-02-09 | Plx Technology, Inc. | Random number generation |
CN102541508A (zh) * | 2010-12-29 | 2012-07-04 | 鸿富锦精密工业(深圳)有限公司 | 真随机数产生***及方法 |
CN102799413A (zh) * | 2011-05-25 | 2012-11-28 | 清华大学 | 一种随机数生成方法和装置 |
CN103842973A (zh) * | 2011-10-05 | 2014-06-04 | 国际商业机器公司 | 监视存储过程的执行 |
US9417846B1 (en) * | 2015-12-07 | 2016-08-16 | International Business Machines Corporation | Techniques for improving random number generation security |
CN106293617A (zh) * | 2016-08-12 | 2017-01-04 | 上海坚芯电子科技有限公司 | 真随机数发生器 |
CN106648543A (zh) * | 2016-12-29 | 2017-05-10 | 北京握奇智能科技有限公司 | 一种随机数生成方法及装置 |
-
2017
- 2017-07-21 CN CN201710601779.6A patent/CN107368283B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7660944B2 (en) * | 2006-07-24 | 2010-02-09 | Plx Technology, Inc. | Random number generation |
CN102541508A (zh) * | 2010-12-29 | 2012-07-04 | 鸿富锦精密工业(深圳)有限公司 | 真随机数产生***及方法 |
CN102799413A (zh) * | 2011-05-25 | 2012-11-28 | 清华大学 | 一种随机数生成方法和装置 |
CN103842973A (zh) * | 2011-10-05 | 2014-06-04 | 国际商业机器公司 | 监视存储过程的执行 |
US9417846B1 (en) * | 2015-12-07 | 2016-08-16 | International Business Machines Corporation | Techniques for improving random number generation security |
CN106293617A (zh) * | 2016-08-12 | 2017-01-04 | 上海坚芯电子科技有限公司 | 真随机数发生器 |
CN106648543A (zh) * | 2016-12-29 | 2017-05-10 | 北京握奇智能科技有限公司 | 一种随机数生成方法及装置 |
Non-Patent Citations (1)
Title |
---|
"随机数发生器和随机数性能检验方法研究";张咏;《万方平台》;20060727;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN107368283A (zh) | 2017-11-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
WO2018214857A1 (zh) | 一种基于区块链的数据处理方法及设备 | |
CN101261679A (zh) | 基于现场可编程门阵列的多指纹密码识别方法及*** | |
CN110490416B (zh) | 任务管理方法及终端设备 | |
CN107368283B (zh) | 一种真随机数生成方法 | |
CN111797604A (zh) | 报表生成方法、装置、设备及计算机可读存储介质 | |
CN110554917A (zh) | 高效遍历较大数据量集合的方法、***、终端及存储介质 | |
CN111177113A (zh) | 数据迁移方法、装置、计算机设备和存储介质 | |
CN109308217A (zh) | 一种时效任务的数据存储方法及装置 | |
TW202118320A (zh) | 近場通訊認證的發起方法及相關裝置 | |
CN109408035B (zh) | 一种业务***的流程配置方法、存储介质和服务器 | |
CN112199443B (zh) | 数据同步方法、装置、计算机设备和存储介质 | |
CN113282490A (zh) | 智能门锁测试方法及电子设备 | |
CN111460021A (zh) | 数据导出方法及装置 | |
CN113505000B (zh) | 区块链中的多线程处理方法、装置、***和存储介质 | |
CN105302557A (zh) | 线程建立及处理的方法及装置 | |
CN102201829B (zh) | 数字基带通信芯片中实现sim/usim卡数据解析的电路结构及方法 | |
CN112052253B (zh) | 数据处理方法、电子设备及存储介质 | |
CN103324542A (zh) | 一种模块间调用的方法及装置 | |
CN114756365A (zh) | 算力资源的标识方法、装置及计算机可读存储介质 | |
CN114461363A (zh) | 任务执行方法及装置、计算机可读存储介质 | |
CN103294874A (zh) | 用于电磁仿真计算***FEKO的Web服务封装方法以及*** | |
CN114722927A (zh) | 一种崩溃聚类方法、装置、电子设备以及存储介质 | |
CN111190797A (zh) | 一种基于linux的硬件事件处理方法及*** | |
CN114238941A (zh) | 一种程序度量验证方法、装置、***及存储介质 | |
CN106980555A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |