大随机数生成器的设计与实现(DES算法)
摘要
大随机数已经在当今社会的各个领域中都频繁使用,特别是在加密技术中已经成了不可缺少的一部分,像RSA,MD5中随机数成为加密技术的关键。
本设计主要为第3代移动通信系统(3G)提供符合要求的随机数(1024位),首先取得系统时间和RAND()函数所产生的随机数作为最初的随机初值,经过三重DES(两密钥通过MD5算法得来)和异或的变换,保证其随机数的足够随机,然后通过16次的循环得到一个组合起来的1024位随机数,设计还提供一个检验随机数是否随机的平台,采用了均匀性检测,即频率检测的方法检测随机数的随机性,通过检测发现,所产生的随机数能够达到我们所期望的随机性。设计还对常见的随机数的生成方法进行了检析,提供多种随机数的生成方法,并且也提供了多种随机数的检测方法供大家参考,希望对大家有所帮助。
关键字:随机数;RSA;MD5;加密技术;均匀性检测
Big Random Number Generator Algorithm Research and Implement
Abstract
The big random number is used everywhere in modern society especially in the encryption technology. The random number is the key technology of the encryption.
This design mainly provides the request random number (1024) for 3rd Generation of mobile communication system. The way to provide the number is discussed in this article, and the Randomness test is discussed too. There are many ways to finish the task which are shown in this paper. We hope these techniques can be useful.
[版权所有:http://DOC163.com]
Key words: Random number; RSA; MD5; Encryption technology; Even line of examination
工作任务:
1.大致了解随机数产生器的发展过程和现阶段的大概情况,认识现阶段随机数产生器的产生方式和所用到的知识,结构体系是怎样的。
2.分析他们的优点和缺点,能够保留的优点就要尽量用到,如果有不足应该怎样改正,加上自己的理解和题目的要求做一个满意的随机数产生器。
要求:
使用VC++平台,编写一个能产生1024位的随机数发生器,而且随机数还要是足够随机的,并且还要编制一个检验平台,能在该平台上检验该随机数是足够随机的。
设计思路:采用VC++6.0
1.使用VC++实现控件的开发与界面的设计,尽量使外观简单容易实用,输出结果方便易看
2.借鉴其他随机数产生器的产生方法,参阅AES,DES中随机数的产生方法,借鉴出其中的精华,补上自己的构思与想法尽量使随机数不出现重复。
因为主导程序对本身就是随机的数经过多次的三重DES和异或等运算,所以能保证随机数的足够随机性,通过16次的循环也能得到一个组合的大随机数,所以能满足设计的需求
界面是用VC++实现与设计的一个随机数发生器,该随机数发生器能够通过点击产生随机数按钮而相映产生1024位的随机数,并且该产生器还记录每次产生的随机数而求其平均值,能够很直观的让我们检测到随机数是否随机。 [版权所有:http://DOC163.com]
随机数产生器界面简单,随机数足够随机并且保证随机数范围满足1024位2进制数。由于时间关系,程序也有一定瑕疵。
对程序改进的方法:对检测的方法增加其他的种类,例如参数检验,游程检验等方法,毕竟,通过的检测越多随机数的可靠性就越高。
目 录
1 引言 1
1.1随机数的概念 1
1.2课题背景 1
1.3 国内外研究现状 1
1.4 本课题研究的意义 1
1.5 本课题的研究方法 1
2常见随机数生成方法简析 2
2.1 迭代取中法 2
2.2 乘同余法 2
2.3 混同于法 2
2.4 反变换法 3
2.4.1 平均分布 : 3
2.4.2 指数分布 : 4
2.4.3 正态分布随机变量的生成 : 4
2.5 离散型随机变量 4
3 随机数的检验 5
4 大随机数产生的机理 6
4.1 流程图 6
4.2 DES算法简介 7
5 算法实现 8
6 检验随机数 13
7 系统测试 14
结 论 16
参考文献 17
致 谢 18