CN106502627A - 一种伪随机数种子生成方法 - Google Patents
一种伪随机数种子生成方法 Download PDFInfo
- Publication number
- CN106502627A CN106502627A CN201610888324.2A CN201610888324A CN106502627A CN 106502627 A CN106502627 A CN 106502627A CN 201610888324 A CN201610888324 A CN 201610888324A CN 106502627 A CN106502627 A CN 106502627A
- Authority
- CN
- China
- Prior art keywords
- random number
- data
- pseudo
- initial value
- length
- 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.)
- Granted
Links
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
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)
- Image Processing (AREA)
- Complex Calculations (AREA)
Abstract
本发明涉及一种伪随机数种子生成方法,主要用于生成计算机适用——特别是单片机适用的伪随机数种子。本发明所述的方法主要分三个步骤:第一步,通过AD转换器采样传感器数据或读取系统时间或开机时长数据等方式,得到数据的初值;第二步,根据数据初值的长度情况,选用按权分段法或镜像法得到中间数据。第三步,将中间数据进行加或非进位加处理、截断处理和重复处理等,得到伪随机数种子。
Description
技术领域
本发明属于计算机算法领域,具体地说涉及一种计算机、特别是单片机适用的伪随机数种子生成方法。
背景技术
随机数在信息通讯、数据加密、计算机数据处理等领域应用广泛,特别是在无线通信防碰撞设计、数据加密通讯和认证等技术领域,随机数是关键基础和安全的保障。
在计算机或单片微机中使用的随机数并非严格意义上的“随机数”,而是按照一定的数学方法产生的数列,但只要这种数列符合均匀性、抽样随机性等统计要求,便被当作随机数来使用,并称为伪随机数。
计算机伪随机数的生成需要一个高随机性的种子(初值),通过一定的算法,生成伪随机数列,从中选取伪随机数使用。种子的取得多种多样,大多通过采样各类传感器数据、读取存储器或寄存器数据、读取时间或开机时长数据、人工输入数据、预先保存的数据等方式获取。
不同的计算机或处理器系统的硬件资源不同,而且数据处理系统需要的随机数的范围也各不相同。通过上述方式取得的种子往往不适合直接使用,需要缩减或者扩展长度,特别是单片机运算资源有限,需要对种子先期处理,提高种子的随机性和适用性。通常对种子仅做简单的截取或拼接后使用,或者不做处理直接使用。这样当随机数列仅生成一次,而多次使用随机数仅从该数列中依次选取时,对随机数的随机性影响不大;但如果资源有限,使用随机数时都重新生成数列或使用过程中存在多次生成随机数列时,伪随机数的随机性就大大降低了。
发明内容
本发明的目的是提供一种伪随机数种子的生成方法。本发明主要分为三个步骤,根据数据初值的大小,分两种情况,采用两种不同的处理方法生成伪随机数种子。
本发明的生成方法按如下步骤实现:
(1)第一步:通过AD转换器采样传感器(如温度传感器)数据,或读取系统时间或开机时长数据,得到数据的初值,但初值位数长度不满足随机数长度要求。
(2)第二步:
1)当数据初值长度大于随机数的长度或数据初值大于最大可取随机数时,采用按权分段法将数据初值分成若干个子数据。
2)当数据初值长度小于随机数的长度时,采用镜像法得到数据初值的镜像数据。
(3)第三步:
1)当数据初值长度大于随机数的长度或数据初值大于最大可取随机数时,将得到的若干个子数据进行非进位加运算得到伪随机数种子;或者将得到的若干个子数据进行累加得到数据中间值,若该中间值符合随机数长度要求,即得到伪随机数种子。若该中间值依然比伪随机数种子长度大,重复第二步和本步,直到得到符合要求的伪随机数种子,或采用截断处理直接得到伪随机数种子。
2)当数据初值长度小于随机数的长度时,将得到的初值镜像数据乘以W的N次方。其中W为采用的数制进制,N为自然数,N等于数据初值长度。或者当随机数长度大于等于2倍数据初值长度时,N等于数据初值长度,反之N等于随机数长度与数据初值长度之差。使初值镜像放大到2倍数据初值长度,或者放大到刚好等于伪随机数的长度(伪随机数长度小于2倍数据初值长度时)。使用0替换掉所得数据的低端长度等于数据初值的部分,再与数据初值进行加运算或者非进位加运算。或者将数据初值与初值镜像对调进行上述运算处理,得到数据中间值。若该中间值大于伪随机数种子长度,采用截断处理得到伪随机数种子;若该中间值依然比伪随机数种子长度小,重复第二步和本步,直到得到符合要求的伪随机数种子。
所述的按权分段法是指选取某个数做为权基数——该权基数应在最大可取伪随机数(或比最大可取伪随机数长度大1的最小数)到最高权重仅次于最大伪随机数最高权重的最大数之间,宜取最大可取伪随机数(或比最大可取伪随机数长度大1的最小数)——以该权基数的0、1、2……n次方(n为自然数)为权重,将对象数据分成若干个数据之和,再除以对应权重后得到若干个子数据段的方法。
所述的镜像法是指按数据的数制,将数据的低端位上的数字与数据高端位上的数字依次对调,即第0位与最高位、第1位次高位,依次类推地对调,得到新数据的方法。
所述的截断处理是指从数据的低端或者高端,去掉一定长度的数据位,保留另一端数据位为新数据的处理方法。
所述的非进位加运算是指数据进行加法运算,当任何数据位相加有进位产生时,都舍掉进位,仅保留非进位部分的运算方法,当采用二进制时即为异或。
作为优选,所述的按权分段法选用10的自然幂指数或者16的自然幂指数为权基数。
作为优选,所述的截断处理从数据的高端截掉,保留低端数据。
具体实施方式
实施例1
采用10进制数,生成0到10000的随机整数(0到10000的随机数主要集中在4位数区域,因此可认为随机数长度为4)。
1)第一步:从9位AD中采样温度传感器数据,得到数据初值为185;
2)第二步:数据初值185偏小,长度为3,应使用镜像法进行扩展。将个位数5与百位数1对调,十位数8居正中无须对调,得到初值镜像581;
3)第三步:①随机数主要集中在4位数长度,数据初值长度为3,其长度差为1,因此可以将初值镜像581乘以10的1次方,得到5810,使用“0”替换低3位得到5000(或1000),与初值(或初值镜像)相加,得到伪随机数种子5185(或1581);②或者数据初值长度为3,直接将初值镜像581乘以10的3次方,得到581000,与数据初值相加,得到581185,截断高2位数据,得到伪随机数种子1185,或者截断低2位数据,得到伪随机数种子5811;③或者随机数主要集中在4位数长度,数据初值长度为3,其长度差为1,将数据初值185乘以10的1次方, 得到1850,使用“0”替换低3位得到1000,与初值镜像相加,得到伪随机数种子1581;④数据初值长度为3,直接将数据初值185乘以10的3次方,得到185000,与初值镜像相加,得到185581,截断高2位数据,得到伪随机数种子5581,或者截断低2位数据,得到伪随机数种子1185。
实施例2
采用2进制数,生成0到10000(二进制为10011100010000)的随机数(随机数种子宜为13位)。
1)第一步:从9位AD中采样温度传感器数据,得到数据初值为185(0b010111001);
2)第二步:数据初值0b010111001为9位,小于伪随机数种子的适宜长度13位,将数据初值0b010111001做镜像对调,即第0位与第8位对调,第1位与第7位对调……第4位自身对调仍为第4位,得到初值镜像0b100111010;
3)第三步:①伪随机数种子长度与数据初值长度之差为4,将初值镜像0b100111010乘以2的4次方(左移4位),得到0b1001110100000,使用“0”替换低9位(与0x1E00求与)得到0b1001100000000,与数据初值0b010111001相加,得到伪随机数种子0b1001110111001(5049);②或者数据初值长度为9位,直接将初值镜像乘以2的9次方,得到0b100111010000000000,与数据初值相加,得到0b100111010010111001,截断高5位数据,得到伪随机数种子0b1010010111001(5305),或者截断低5位数据,得到伪随机数种子0b1001110100101(5029);③或者伪随机数长度为13位,数据初值长度为9,其长度差为4,将数据初值0b010111001乘以2的4次方, 得到0b0101110010000,使用“0”替换低9位得到0b0101000000000,与初值镜像相加,得到伪随机数种子0b0101100111010(2874);④数据初值长度为9,直接将数据初值0b010111001乘以2的9次方,得到0b010111001000000000,与初值镜像0b100111010相加,得到0b010111001100111010,截断高5位数据,得到伪随机数种子0b1001100111010(4922),或者截断低2位数据,得到伪随机数种子0b0101110011001(2969)。
实施例3
采用10进制数,生成0到100的随机整数(随机数种子宜为2位)。
1)第一步:从9位AD中采样温度传感器数据,得到数据初值为185;
2)第二步:数据初值185为3位,比随机数种子长度大1位,且比可取伪随机数大。使用按权分段法,取最大可取伪随机数100为权基数,使用1000和1001为权重将数据185拆分为100加85,分别除以对应权重得到子数据1和85;
3)第三步:数据初值长度大于随机数种子长度,使用按权分段处理。将子数据1和85相加(或非进位加),得到伪随机数种子86。
实施例4
采用2进制数,生成0到100(二进制为0b1100100)的随机数(随机数种子宜为7位)。
1)第一步:从9位AD中采样温度传感器数据,得到数据初值为0b010111001;
2)第二步:数据初值0b010111001的有效数据为0b10111001,长度为8,比随机数种子长度长,且比最大可取伪随机数大。使用按权分段法,取长度比随机数种子大1的最小数27(0b10000000 ,即128)为权基数,使用20和27为权重将数据初值0b010111001拆分为0b10000000加0b111001,分别除以对应权重得到子数据0b1和0b111001;
第三步:数据初值长度大于随机数种子长度,使用按权分段处理。将子数据0b1和0b111001相加,得到伪随机数种子0b111010(58);或将子数据0b1和0b111001异或,得到伪随机数种子0b111000(56)。
Claims (5)
1.一种伪随机数种子生成方法,其特征是按如下步骤进行:
第一步:通过AD转换器采样传感器数据,或读取系统时间或开机时长数据,得到数据的初值,但初值位数长度长度大于伪随机数长度,或数据初值大于最大可取随机数;
第二步:采用按权分段法将数据初值分成若干个子数据;
第三步:将得到的若干个子数据进行非进位加运算得到伪随机数种子;或者将得到的若干个子数据进行累加得到数据中间值,若该中间值符合随机数长度要求,即得到伪随机数种子;若该中间值依然比伪随机数种子长度大,重复第二步和本步,直到得到符合要求的伪随机数种子,或采用截断处理直接得到伪随机数种子。
2.根据权利要求1所述的一种伪随机数种子生成方法,其特征是按权分段法取最大可取伪随机数(或比该数位数长度大1的最小数)到最高权重仅次于最大伪随机数最高权重的最大数之间的某个数为权基数,以该权基数的0、1、2……n次方(n为自然数)为权重,将对象数据分成若干个数据之和,再除以对应权重后得到若干个子数据。
3.根据权利要求1或2所述的一种伪随机数种子生成方法,其特征是按权分段法选用10的自然幂指数或者16的自然幂指数为权基数。
4.一种伪随机数种子生成方法,其特征是按如下步骤进行:
第一步:通过AD转换器采样传感器数据,或读取系统时间或开机时长数据,得到数据的初值,但初值长度小于伪随机数长度;
第二步:采用镜像法得到数据初值的镜像数据;
第三步:将镜像数据乘以W的N次方(W为数据采用的数制进制,N为自然数,W的N次方为某数据位的权重),使之放大到2倍数据初值长度,或者放大到刚好等于伪随机数的长度(伪随机数长度小于2倍数据初值长度时),用0替换掉所得数据的低端长度等于数据初值长度的部分,再与数据初值进行加运算或者非进位加运算;
或者将数据初值与初值镜像对调进行上述运算处理,得到数据中间值;
若该中间值大于伪随机数种子长度,采用截断处理得到伪随机数种子;若该中间值依然比伪随机数种子长度小,重复第二步和本步,直到得到符合要求的伪随机数种子。
5.根据权利要求4所述的伪随机数种子生成方法,其特征是:镜像法按数据的数制,将数据的低端位上的数字与数据高端位上的数字依次对调,得到新数据。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610888324.2A CN106502627B (zh) | 2016-10-12 | 2016-10-12 | 一种伪随机数种子生成方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610888324.2A CN106502627B (zh) | 2016-10-12 | 2016-10-12 | 一种伪随机数种子生成方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106502627A true CN106502627A (zh) | 2017-03-15 |
CN106502627B CN106502627B (zh) | 2019-04-26 |
Family
ID=58294820
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610888324.2A Active CN106502627B (zh) | 2016-10-12 | 2016-10-12 | 一种伪随机数种子生成方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106502627B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984152A (zh) * | 2018-08-21 | 2018-12-11 | 北京睦合达信息技术股份有限公司 | 一种数据处理方法、系统和计算机可读存储介质 |
CN112328207A (zh) * | 2020-11-30 | 2021-02-05 | 中国石油大学(华东) | 一种基于单片机随机源工作参数的真随机数产生器及产生方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778069A (en) * | 1996-04-10 | 1998-07-07 | Microsoft Corporation | Non-biased pseudo random number generator |
CN1879080A (zh) * | 2004-11-18 | 2006-12-13 | 株式会社新泻Tlo | 随机数生成方法及随机数生成装置 |
CN100454236C (zh) * | 2004-05-13 | 2009-01-21 | 华为技术有限公司 | 随机数发生装置和软件测试的系统及方法 |
US20090323944A1 (en) * | 2000-12-27 | 2009-12-31 | Vanstone Scott A | Method of public key generation |
CN102541508A (zh) * | 2010-12-29 | 2012-07-04 | 鸿富锦精密工业(深圳)有限公司 | 真随机数产生系统及方法 |
CN103530086A (zh) * | 2013-09-26 | 2014-01-22 | 福建升腾资讯有限公司 | 一种分散机制的软件随机数生成方法 |
-
2016
- 2016-10-12 CN CN201610888324.2A patent/CN106502627B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5778069A (en) * | 1996-04-10 | 1998-07-07 | Microsoft Corporation | Non-biased pseudo random number generator |
US20090323944A1 (en) * | 2000-12-27 | 2009-12-31 | Vanstone Scott A | Method of public key generation |
CN100454236C (zh) * | 2004-05-13 | 2009-01-21 | 华为技术有限公司 | 随机数发生装置和软件测试的系统及方法 |
CN1879080A (zh) * | 2004-11-18 | 2006-12-13 | 株式会社新泻Tlo | 随机数生成方法及随机数生成装置 |
CN102541508A (zh) * | 2010-12-29 | 2012-07-04 | 鸿富锦精密工业(深圳)有限公司 | 真随机数产生系统及方法 |
CN103530086A (zh) * | 2013-09-26 | 2014-01-22 | 福建升腾资讯有限公司 | 一种分散机制的软件随机数生成方法 |
Non-Patent Citations (3)
Title |
---|
俸远祯,等编;: "《计算机组成原理1996年4月第1版》", 30 April 1996, 电子工业出版社 * |
孙为民: "正态分布随机数的生成方法", 《电脑编程技巧与维护》 * |
曾建潮,等;: "一种新的适用于微机的随机数产生方法", 《计算机工程与设计》 * |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108984152A (zh) * | 2018-08-21 | 2018-12-11 | 北京睦合达信息技术股份有限公司 | 一种数据处理方法、系统和计算机可读存储介质 |
CN108984152B (zh) * | 2018-08-21 | 2021-01-29 | 北京睦合达信息技术股份有限公司 | 一种数据处理方法、系统和计算机可读存储介质 |
CN112328207A (zh) * | 2020-11-30 | 2021-02-05 | 中国石油大学(华东) | 一种基于单片机随机源工作参数的真随机数产生器及产生方法 |
CN112328207B (zh) * | 2020-11-30 | 2022-08-12 | 中国石油大学(华东) | 一种基于单片机随机源工作参数的真随机数产生器及产生方法 |
Also Published As
Publication number | Publication date |
---|---|
CN106502627B (zh) | 2019-04-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8184805B2 (en) | Program converter, encrypting device, and encrypting method | |
CN110262773B (zh) | 一种计算机数据处理方法及装置 | |
CN110519058A (zh) | 一种对于基于格的公钥加密算法的加速方法 | |
AU2021200063B2 (en) | Systems and computer-implemented methods for generating pseudo random numbers | |
CN108959168B (zh) | 基于片上内存的sha512全流水电路及其实现方法 | |
EP1569381A1 (en) | System and method for authentification | |
CN106502627A (zh) | 一种伪随机数种子生成方法 | |
KR20230141045A (ko) | 암호 프로세서 장치 및 이를 채용하는 데이터 처리 장치 | |
EP2827516B1 (en) | Scrambling code generation method, apparatus and scrambling code processing apparatus | |
WO2017209890A1 (en) | Single clock cycle cryptographic engine | |
CN114124359A (zh) | 保留格式加密数据的方法、装置、电子设备及存储介质 | |
CN110515591B (zh) | 基于区块链的随机数生成方法及装置 | |
US11791981B2 (en) | Generating cryptographic random data from raw random data | |
CN114826560A (zh) | 一种轻量级分组密码cref实现方法及系统 | |
EP3583738B1 (en) | Method and device to produce a secure hash value | |
CN113127911A (zh) | 电力数据加密方法、装置及终端 | |
CN114499465A (zh) | 散列算法及电路、电子设备 | |
CN112202548A (zh) | 流加密密钥流生成方法、装置、电路和加密方法 | |
CN112487448B (zh) | 一种加密信息处理装置、方法及计算机设备 | |
CN116484443B (zh) | 一种基于鸿蒙系统的可信安全存储方法及装置 | |
CN117873431B (zh) | 基于国密sm4算法的随机数生成方法及装置 | |
CN115208667B (zh) | 通过混合编程实现芯片与文件进行双重加密解密方法 | |
CN118233081B (zh) | 一种基于neon指令集的国密sm2底层模乘优化方法 | |
CN117155550A (zh) | 一种加密通信方法、装置及系统 | |
CN118842609A (zh) | 数据加密方法、加密装置和计算机程序产品 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | 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 |