大随机数生成器算法的研究与实现
摘 要网络技术的迅速发展,在极大地改善着人们的生活品质和工作方式的同时,也带来了许多安全的方面隐患,加密技术已经成为了网络快速发展不可缺少的一部分。其中大随机数的研究更是加密技术不可缺少的一部分,比如MD5中随机数就是加密技术的关键。在本文中,我们设计了一个以DES算法为基础的三重DES算法,用MD5算法得到初始的K1K2值,在用产生的初始时间做为开始的初值。通过程序将会得到一个64位2进制数,然后进行16次的循环得到一个1024位的随机数。并且本设计为了更加直观的看随机数是否足够随机还用均匀性检测的方法设计了一个平台,将得到的随机数存放到32个数组中,通过多次检测发现,所产生的随机数能够产生足够的随机性的随机数。
目 录
第一章 引言 1
1.1什么是随机数 1
1.2课题背景 1
1.3 国际研究现状 1
1.4 本课题研究的目的与意义 1
1.5 本课题的研究方法与任务 2
第二章 常见随机数发生器 3
2.1平方取中法 3
2.2线性同余法 3
2.3反馈位移寄存器法 4
2.4组合发生器 4
2.5逆同余与非线性同余发生器 5
第三章 大随机数产生的机理 6
3.1核心算法 6
3.2原理图 6
第四章 算法的实现 8
4.1 DES算法 8
4.2 流程图 13
4.3算法的设计 14
第五章 随机数发生器检验 18
5.1 随机数的检验 18
5.1.1概述 18
5.1.2检验类型 18
5.1.3统计检验的方法 18
5.2算法的检验 19
5.3随机数效果检验平台效果图 19
结束语 21
致 谢 22
第一章 引言
1.1什
*好棒文|www.hbsrm.com +Q: #351916072#
么是随机数
现阶段我们所认识的计算机是不可能生成绝对随机的随机数。所以现在我们把计算机中用数学方法产生的随机数称为伪随机数。这些数都是按照我们的算法所生成的,所以就不可能是真正的随机数。真随机数,也就是原子衰变所产生的随机数。尽管不能做到真随机数。但是我们可以通过对随机数生成算法的精心设计研究,通过一系列的统计检验。使他拥有真正随机数的一些统计性质。那样我们就可以把这些伪随机数无限近似看做真随机数但仍然不能把它当做真随机数。
1.2课题背景
随机数在当今社会的各领域中都在频繁的使用,特别是信息安全方面,已经成为加密技术中已经成了不可缺少的关键部分,很多加密技术的保密程度高低关键在于随机数算法。现阶段能满足像RSA,MD5需求大量随机数的密码技术需要的随机数发生器是衡量随机数发生器好坏的一个重要标准。现在很多随机数发生器已经研制出来并存在,但是仍然存在很多问题和不足,如随机数的数目不够,不够,等等,所以编制一个能够产生我们需要足够大的且足够随机的随机数的随机数产生器就变得非常重要。随机数发生器的加密算法将在网络安全中起着重要的作用。
1.3 国际研究现状
经过查阅材料和在网上懂得,国际对随机数的研究要领先于国人对随机数的研究,但是整体来说对随机数的研究都还不够深入与透彻,都在伪随机数的范围之内,但事实上,技术支持和环境配置仍然制约着我们,所以大部分研究只停留在伪随机数的水平上,我们只能做无限接近真随机数的伪随机数。而不能成为真随机数。特别是在随机数的检测这方面,虽然检测的方法很多,但是都不够完善,没有一个很公用而且很全面的检测方法,所以我认为对随机数的研究我们还有许多方面有待提高和研究。
1.4 本课题研究的目的与意义
本次设计出的随机数发生器产生的随机数的要速度快,占用计算机的内存少,具备完全可重复性。尽可能的适用在需要用到随机数的任何地方,产生的随机数序列要具备均匀总体随机样本的统计性质,列如分布的均匀性,抽样的随机性等等。本次研究设计所要做的就是让随机数发生器产生的随机数足够的随机尽量的靠近真随机数。
1.5 本课题的研究方法与任务
工作任务:
1.认识并了解一些常见的随机数发生器的原理,并运用所学知识对些随机数发生器进行分析。
2.分析他们的优点和缺点,去除这些发生器的缺点,灵活运用这些随机数发生器的优点加上自己的理解和题目的要求做一个合理的随机数产生器。
要求:
采用了一个VC+ +平台,编写了一个1024位随机数生成器,并且随机数也足够的随机,编写一个测试平台,该平台可以测试随机数。
1.利用VC++达成控件的开发与界面的设计,尽可能使操作简单明了,结果易于查看,界面实用性高。
2.参考其他随机数产生器的产生方法,理解AES,DES中随机数的产生方法,取其精华去其糟粕,然后用自己的构思与想法尽量使随机数不出现重复。达到本次设计的最终结果。
第二章 常见随机数发生器
2.1平方取中法
平方取中法(Mid一squaremethod)是VonNeumna于1940年提出的。这种方法的原理是开始取一个2位的整数,我们称为种子,将它平方,我们可以获得4S位整数(不足4s位的高位补0),然后取45位中的2S位作为下一次种子,并对次数规格化(即化为小于1的2s位的实数值),即为第一个在【0,l】区间上的随机数,以此类推,我们便可获得一系列的随机数。其递推公式为:
1)十进制
2)二进制
(1)[x]表示不超过2的最大整数(取整)a
(2)[x]=a(modM)表示x等于a被M除的余数。
注:这种方法很简单,在历史上很有意思受到一些关注。但关键是均匀性不是很好,而且序列很快趋于零,序列的长度也很难确定,已经不符合当代发展的需要,被现阶段所淘汰。
2.2线性同余法
线性同余法是Lehmer在1951年提出来的一种算法,这种设计方法的原理是利用数论中的同余运算来产生随机数的,所以我们称为同余发生器。其递推公式为:
其中,a为乘子,c为增量,x0为种子,m为模。
线性同余法有以下几个特点:
(1)0
(2)适当选取m,a,C可使x,循环,且无论x取何值,其循环顺序要相同,循环周期我们称为发生器周期,记为P。若p=m,则称之为满周期。
2.3反馈位移寄存器法
到1965年的时候,几种十分有趣且很有意义随机数发生器研究并发现出来,它们是以Tuasworthe(陶思沃思)发表的论文为基础而产生的。这些随机数发生器经过对寄存器进行位移(递推),直接在存储单元中形成随机数。我们称这种方法为反馈位移寄存器法,简称为FSR方法或者FSR发生器。Tausworthe(1965)提出的FRS方法,我们用线性反馈递推公式可表示为:
目 录
第一章 引言 1
1.1什么是随机数 1
1.2课题背景 1
1.3 国际研究现状 1
1.4 本课题研究的目的与意义 1
1.5 本课题的研究方法与任务 2
第二章 常见随机数发生器 3
2.1平方取中法 3
2.2线性同余法 3
2.3反馈位移寄存器法 4
2.4组合发生器 4
2.5逆同余与非线性同余发生器 5
第三章 大随机数产生的机理 6
3.1核心算法 6
3.2原理图 6
第四章 算法的实现 8
4.1 DES算法 8
4.2 流程图 13
4.3算法的设计 14
第五章 随机数发生器检验 18
5.1 随机数的检验 18
5.1.1概述 18
5.1.2检验类型 18
5.1.3统计检验的方法 18
5.2算法的检验 19
5.3随机数效果检验平台效果图 19
结束语 21
致 谢 22
第一章 引言
1.1什
*好棒文|www.hbsrm.com +Q: #351916072#
么是随机数
现阶段我们所认识的计算机是不可能生成绝对随机的随机数。所以现在我们把计算机中用数学方法产生的随机数称为伪随机数。这些数都是按照我们的算法所生成的,所以就不可能是真正的随机数。真随机数,也就是原子衰变所产生的随机数。尽管不能做到真随机数。但是我们可以通过对随机数生成算法的精心设计研究,通过一系列的统计检验。使他拥有真正随机数的一些统计性质。那样我们就可以把这些伪随机数无限近似看做真随机数但仍然不能把它当做真随机数。
1.2课题背景
随机数在当今社会的各领域中都在频繁的使用,特别是信息安全方面,已经成为加密技术中已经成了不可缺少的关键部分,很多加密技术的保密程度高低关键在于随机数算法。现阶段能满足像RSA,MD5需求大量随机数的密码技术需要的随机数发生器是衡量随机数发生器好坏的一个重要标准。现在很多随机数发生器已经研制出来并存在,但是仍然存在很多问题和不足,如随机数的数目不够,不够,等等,所以编制一个能够产生我们需要足够大的且足够随机的随机数的随机数产生器就变得非常重要。随机数发生器的加密算法将在网络安全中起着重要的作用。
1.3 国际研究现状
经过查阅材料和在网上懂得,国际对随机数的研究要领先于国人对随机数的研究,但是整体来说对随机数的研究都还不够深入与透彻,都在伪随机数的范围之内,但事实上,技术支持和环境配置仍然制约着我们,所以大部分研究只停留在伪随机数的水平上,我们只能做无限接近真随机数的伪随机数。而不能成为真随机数。特别是在随机数的检测这方面,虽然检测的方法很多,但是都不够完善,没有一个很公用而且很全面的检测方法,所以我认为对随机数的研究我们还有许多方面有待提高和研究。
1.4 本课题研究的目的与意义
本次设计出的随机数发生器产生的随机数的要速度快,占用计算机的内存少,具备完全可重复性。尽可能的适用在需要用到随机数的任何地方,产生的随机数序列要具备均匀总体随机样本的统计性质,列如分布的均匀性,抽样的随机性等等。本次研究设计所要做的就是让随机数发生器产生的随机数足够的随机尽量的靠近真随机数。
1.5 本课题的研究方法与任务
工作任务:
1.认识并了解一些常见的随机数发生器的原理,并运用所学知识对些随机数发生器进行分析。
2.分析他们的优点和缺点,去除这些发生器的缺点,灵活运用这些随机数发生器的优点加上自己的理解和题目的要求做一个合理的随机数产生器。
要求:
采用了一个VC+ +平台,编写了一个1024位随机数生成器,并且随机数也足够的随机,编写一个测试平台,该平台可以测试随机数。
1.利用VC++达成控件的开发与界面的设计,尽可能使操作简单明了,结果易于查看,界面实用性高。
2.参考其他随机数产生器的产生方法,理解AES,DES中随机数的产生方法,取其精华去其糟粕,然后用自己的构思与想法尽量使随机数不出现重复。达到本次设计的最终结果。
第二章 常见随机数发生器
2.1平方取中法
平方取中法(Mid一squaremethod)是VonNeumna于1940年提出的。这种方法的原理是开始取一个2位的整数,我们称为种子,将它平方,我们可以获得4S位整数(不足4s位的高位补0),然后取45位中的2S位作为下一次种子,并对次数规格化(即化为小于1的2s位的实数值),即为第一个在【0,l】区间上的随机数,以此类推,我们便可获得一系列的随机数。其递推公式为:
1)十进制
2)二进制
(1)[x]表示不超过2的最大整数(取整)a
(2)[x]=a(modM)表示x等于a被M除的余数。
注:这种方法很简单,在历史上很有意思受到一些关注。但关键是均匀性不是很好,而且序列很快趋于零,序列的长度也很难确定,已经不符合当代发展的需要,被现阶段所淘汰。
2.2线性同余法
线性同余法是Lehmer在1951年提出来的一种算法,这种设计方法的原理是利用数论中的同余运算来产生随机数的,所以我们称为同余发生器。其递推公式为:
其中,a为乘子,c为增量,x0为种子,m为模。
线性同余法有以下几个特点:
(1)0
2.3反馈位移寄存器法
到1965年的时候,几种十分有趣且很有意义随机数发生器研究并发现出来,它们是以Tuasworthe(陶思沃思)发表的论文为基础而产生的。这些随机数发生器经过对寄存器进行位移(递推),直接在存储单元中形成随机数。我们称这种方法为反馈位移寄存器法,简称为FSR方法或者FSR发生器。Tausworthe(1965)提出的FRS方法,我们用线性反馈递推公式可表示为:
版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/jsj/jsjkxyjs/2129.html