一种基于混沌的计算机随机数生成系统及方法技术方案

技术编号:24120069 阅读:30 留言:0更新日期:2020-05-13 02:49
本发明专利技术公开了一种基于混沌的计算机随机数生成系统及方法,其对计算机系统中常用的伪随机数生成函数进行了改进。该方法包括3个接口:hdintrand函数、hddoublerand函数和hdcharrand函数,分别实现生成整型伪随机数、浮点型伪随机数和字符型伪随机序列。该方法采用基于改进的一维Logistic混沌映射的随机数生成方法,与基于同余式的随机数生成相比,具有密码学意义上的安全性,可满足信息安全场合的随机数需求。通过接口指定类型和范围来获得所需要的随机数,并提供了密钥找回随机数的功能,保持原有计算机系统随机数生成函数的随机性和效率,同时安全性和通用性的提高使其具有了更高的实用价值。

【技术实现步骤摘要】
一种基于混沌的计算机随机数生成系统及方法
本专利技术涉及信息安全领域,尤其是一种基于混沌的计算机随机数生成系统及方法。
技术介绍
伪随机数发生器(PRNG)广泛应用于系统仿真、安全等各个领域。基于可靠、高效的伪随机数发生器在系统仿真中真实地描述系统的运行、演变及其发展过程。在以密码学为基础的信息安全领域中,伪随机数发生器也扮演着重要的角色,密钥生成、数字签名、认证和鉴别以及各种安全通信协议都离不开高质量的随机数。从某种意义上讲,随机数的安全性决定了整个安全体系的安全性。在C语言<stdlib.h>中有四个常用的伪随机数生成函数:rand()、srand()、randomize()和random(num),但是以上四个函数都有明显的缺陷,且易用性较差。
技术实现思路
本专利技术的技术解决问题:克服现有技术的不足,提供一种基于混沌的计算机随机数生成系统及方法,用户可以根据自身要求设置序列的长度、上下界,提高通用性;通过调用精度更高的函数获取微秒级时间,有效防止c语言中获取秒级时间造成的伪随机数序列被攻击的问题;改进原有一维Logistic映射模型,获得随机性更强的混沌序列。本专利技术的技术解决方案为:一种基于混沌的计算机随机数生成系统,其特征在于:包括用户通用性设置模块,安全性加强模块以及随机数生成模块;用户通用性设置模块:用于提供外部接口,方便其他程序调用,通过输入相关函数参数获得需要的随机序列;所述外部接口以接口函数的方式提供,提供三种接口:分别实现生成整型伪随机数、浮点型伪随机数和字符型伪随机序列,对应的函数分别为:hdintrand函数、hddoublerand函数、hdcharrand函数;其中,函数参数包括:a[]接收随机数的数组,long序列长度,Key找回随机数的密钥,*p接收生成的密钥,hdintrand函数和hddoublerand函数还包括min取值范围的最小值,max取值范围的最大值,用于获取对序列的长度、上下界、找回随机序列;安全性加强模块:使用c中time.h中提供的minsec函数获取系统微秒级时间,并将年、月、日、时、分、秒、微秒相乘得到序列sk,如果日期中有‘0’的乘数项则将其默认置为‘1’,防止序列被置零,通过获取的是系统微妙级时间,能防止获取系统秒级时间而造成的伪随机数序列容易被攻击;随机数生成模块:采用改进的一维Logistic映射模型,通过分组迭代方式,每次只生成单个的伪随机数,从而提高一维逻辑映射函数的随机性;同时,该改进的一维Logistic映射模型的两个参数μ和X0由多个因素共同决定:使用四组参数迭代作为系统的系数μ;混沌序列初值X0由固定十六进制参数mk和微秒级时间序列积sk两个参数决定。进一步的,所述用户通用性设置模块对接口进行调用,生成整型伪随机数、浮点型伪随机数和字符型伪随机序列;对应调用的的函数分别为:hdintrand函数、hddoublerand函数、hdcharrand函数;调用某一函数并设置参数,参数中包括接收随机数的数组,序列长度,取值范围的最大值和最小值,找回随机数的密钥和接收生成的密钥;在字符型伪随机序列生成中,不包括取值范围的参数,供用户通用性设置模块调用。进一步的,所述安全性加强模块使用c中time.h中提供的minsec函数获取系统微秒级时间,并将年、月、日、时、分、秒、微秒相乘得到序列sk,如果日期中有‘0’的乘数项则将其默认置为‘1’,防止序列被置零,将所得序列sk规范化,同时获取四组固定十六进制参数,每次都依次使用四组参数中的一个进行迭代,防止只使用一个参数造成的随机性不达标,以此获得mk序列,将mk按需移位生成x,供安全性加强模块调用。进一步的,所述随机数生成模块将安全性加强模块调用生成获得的规范化的sk和x异或运算获得初始迭代x,然后进行n次预迭代,n为生成混沌序列之前为提高随机性预迭代的次数,通过提高迭代的次数,生成随机性更强的混沌序列,将预迭代后的x与系统参数μ根据移位Logistic映射迭代,最终规格化生成单个伪随机数,根据随机序列长度分组多次迭代后最终生成伪随机数序列。本专利技术还提出一种基于混沌的计算机随机数生成方法,包括如下步骤:步骤(1)、对接口进行调用,应用生成整型伪随机数、浮点型伪随机数和字符型伪随机序列,调用随机数生成函数并设置函数参数,函数参数中应包括接收随机数的数组,序列长度,取值范围的最大值和最小值,找回随机数的密钥和接收生成的密钥;在字符型伪随机序列生成中,不包括取值范围的参数,供用户通用性设置模块调用;步骤(2),随机数生成数函数使用c中time.h中提供的minsec函数获取系统微秒级时间,并将年、月、日、时、分、秒、微秒相乘得到序列sk,如果日期中有‘0’的乘数项则将其默认置为‘1’,防止序列被置零,将所得序列sk规范化,同时获取四组固定十六进制参数,每次都会依次使用四组参数中的一个进行迭代,防止只使用一个参数造成的随机性不达标,以此获得mk序列,将mk按需移位生成x;步骤(3)、将所得规范化的sk和x异或运算获得初始迭代x,然后进行n次预迭代,n为生成混沌序列之前为提高随机性预迭代的次数,通过提高迭代的次数,可以生成随机性更强的混沌序列,将预迭代后的x与系统参数μ根据移位Logistic映射迭代,最终规格化生成单个伪随机数,根据随机序列长度分组多次迭代后最终生成伪随机数序列。进一步的,所述步骤(1)具体包括:(1.1)创建存储参数的变量;(1.1.1)创建接longint型收生成密钥的变量参数key;(1.1.2)创建存储随机数序列或字符序列的数组a[];(1.2)设置参数;(1.2.1)设置接受随机数序列或字符序列的数组a[];(1.2.2)设置序列长度为300*300;(1.2.3)设置序列范围为[0,255];(1.2.4)设置随机数找回密钥为0;(1.2.5)设置接受生成的密钥指针为&key;(1.3)进入步骤(2)。进一步的,所述步骤(2)具体包括:(2.1)获取参数;(2.1.1)调用time.h中的minsec()函数,获取y(年)m(月)d(日)h(时)min(分)s(秒)us(微秒)时间参数;(2.1.2)将(2.1.1)中参数为0的改成1;(2.1.3)将(2.1.2)中参数值相乘获得sk并规范化;(2.1.4)获取四组固定十六进制参数;(2.1.5)每次迭代使用一个参数作为mk;(2.1.6)根据一维Logistic模型中x取值范围[0,1],将mk进行按需移位;(2.2)将sk与x进行按位异或生成初始化x。进一步的,所述步骤(3)具体包括:(3.1)获取由步骤2生成的初始化参数x;(3.1.1)生成随机数γ,令γ与迭代初值x进行预迭代n次,即x=x*γn生成迭代值x,n值设为[0,100];(本文档来自技高网...

【技术保护点】
1.一种基于混沌的计算机随机数生成系统,其特征在于:包括用户通用性设置模块,安全性加强模块以及随机数生成模块;/n用户通用性设置模块:用于提供外部接口,方便其他程序调用,通过输入相关函数参数获得需要的随机序列;所述外部接口以接口函数的方式提供,提供三种接口:分别实现生成整型伪随机数、浮点型伪随机数和字符型伪随机序列,对应的函数分别为:hdintrand函数、hddoublerand函数、hdcharrand函数;其中,函数参数包括:a[]接收随机数的数组,long序列长度,Key找回随机数的密钥,*p接收生成的密钥,hdintrand函数和hddoublerand函数还包括min取值范围的最小值,max取值范围的最大值,用于获取对序列的长度、上下界、找回随机序列;/n安全性加强模块:使用c中time.h中提供的minsec函数获取系统微秒级时间,并将年、月、日、时、分、秒、微秒相乘得到序列sk,如果日期中有‘0’的乘数项则将其默认置为‘1’,防止序列被置零,通过获取的是系统微妙级时间,能防止获取系统秒级时间而造成的伪随机数序列容易被攻击;/n随机数生成模块:采用改进的一维Logistic映射模型,通过分组迭代方式,每次只生成单个的伪随机数,从而提高一维逻辑映射函数的随机性;同时,该改进的一维Logistic映射模型的两个参数μ和X...

【技术特征摘要】
1.一种基于混沌的计算机随机数生成系统,其特征在于:包括用户通用性设置模块,安全性加强模块以及随机数生成模块;
用户通用性设置模块:用于提供外部接口,方便其他程序调用,通过输入相关函数参数获得需要的随机序列;所述外部接口以接口函数的方式提供,提供三种接口:分别实现生成整型伪随机数、浮点型伪随机数和字符型伪随机序列,对应的函数分别为:hdintrand函数、hddoublerand函数、hdcharrand函数;其中,函数参数包括:a[]接收随机数的数组,long序列长度,Key找回随机数的密钥,*p接收生成的密钥,hdintrand函数和hddoublerand函数还包括min取值范围的最小值,max取值范围的最大值,用于获取对序列的长度、上下界、找回随机序列;
安全性加强模块:使用c中time.h中提供的minsec函数获取系统微秒级时间,并将年、月、日、时、分、秒、微秒相乘得到序列sk,如果日期中有‘0’的乘数项则将其默认置为‘1’,防止序列被置零,通过获取的是系统微妙级时间,能防止获取系统秒级时间而造成的伪随机数序列容易被攻击;
随机数生成模块:采用改进的一维Logistic映射模型,通过分组迭代方式,每次只生成单个的伪随机数,从而提高一维逻辑映射函数的随机性;同时,该改进的一维Logistic映射模型的两个参数μ和X0由多个因素共同决定:使用四组参数迭代作为系统的系数μ;混沌序列初值X0由固定十六进制参数mk和微秒级时间序列积sk两个参数决定。


2.根据权利要求1所述的一种基于混沌的计算机随机数生成系统,其特征在于:
所述用户通用性设置模块对接口进行调用,生成整型伪随机数、浮点型伪随机数和字符型伪随机序列;对应调用的的函数分别为:hdintrand函数、hddoublerand函数、hdcharrand函数;
调用某一函数并设置参数,参数中包括接收随机数的数组,序列长度,取值范围的最大值和最小值,找回随机数的密钥和接收生成的密钥;
在字符型伪随机序列生成中,不包括取值范围的参数,供用户通用性设置模块调用。


3.根据权利要求1所述的一种基于混沌的计算机随机数生成系统,其特征在于:
所述安全性加强模块使用c中time.h中提供的minsec函数获取系统微秒级时间,并将年、月、日、时、分、秒、微秒相乘得到序列sk,如果日期中有‘0’的乘数项则将其默认置为‘1’,防止序列被置零,将所得序列sk规范化,同时获取四组固定十六进制参数,每次都依次使用四组参数中的一个进行迭代,防止只使用一个参数造成的随机性不达标,以此获得mk序列,将mk按需移位生成x,供安全性加强模块调用。


4.根据权利要求1所述的一种基于混沌的计算机随机数生成系统,其特征在于:
所述随机数生成模块将安全性加强模块调用生成获得的规范化的sk和x异或运算获得初始迭代x,然后进行n次预迭代,n为生成混沌序列之前为提高随机性预迭代的次数,通过提高迭代的次数,生成随机性更强的混沌序列,将预迭代后的x与系统参数μ根据移位Logistic映射迭代,最终规格化生成单个伪随机数,根据随机序列长度分组多次迭代后最终生成伪随机数序列。


5.一种基于混沌的计算机随机数生成方法,其特征在于,包括如下步骤:
步骤(1)、对接口进行调用,应...

【专利技术属性】
技术研发人员:李晓东娄豪金鑫
申请(专利权)人:北京电子科技学院
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1