`
臻是二哥
  • 浏览: 183751 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
博客专栏
Group-logo
Java技术分享
浏览量:0
社区版块
存档分类
最新评论

计算机中的随机数

阅读更多
随机数的性质从弱到强分为3类:
1. 随机性
2. 不可预测性
3. 不可重现性

在上面的三个性质中,越往下就越严格。具备随机性,不代表一定具备不可预测性;具备不可预测性,不代表一定具备不可重现性;但如果具备不可重现性,一定具备随机性和不可预测性。

满足上面的3性依次对应着:弱伪随机数,强伪随机数,真随机数。
在计算机中,用软件生成的随机数都是伪随机数,即弱伪随机数和强伪随机数。由于弱伪随机数不具备不可预测性,因此在密码学中只使用强随机数和真随机数(在密码学中,随机数常常被用于生成密钥,因此具备可预测性是危险的)

至此,我们知道,密码学中使用的随机数一定是强伪随机数或者真随机数。由于真随机数用纯软件产生很困难,因此我们在软件设计中都是用强伪随机数。不过遗憾的是,一些语言提供的随机数生成函数都是弱随机数。比如java.util.Random类生成的就是弱伪随机数,当时java中的java.security.SecureRandom类提供的是强随机数。

下面我们介绍几种伪随机数生成器。
1. 线性同余法
线性同余法生成随机数的过程如下:
第一个伪随机数R0=(A*种子+C) mod M
第二个伪随机数R1=(A*R0+C) mod M
第 N个伪随机数Rn=(A*第N-1个随机数+C) mod M
过程原理如图所示:


可见,线性同余法生成的随机数序列是可预测的,这一点使得他无法应用在密码学中。

2. 单向散列函数法
使用种子作为初始状态,将该状态作为输入,用单项散列函数计算随机数序列。然后使内部状态自增,然后继续使用单项散列函数计算随机数序列。


攻击者若想预测下一个随机数,就得知道内部状态,由于单项散列函数具有单项性,所以这是不可能的。因此单项散列函数法具备不可预测性,可以用在密码学中。

3. 密码法
原理同单项散列函数法,只不过将散列函数换成了密钥而已。




  • 大小: 65.3 KB
  • 大小: 73.6 KB
  • 大小: 73.9 KB
分享到:
评论

相关推荐

    计算机中随机数的产生

    计算机中随机数是如何产生的``````````````````````````

    Java获取计算机信息和产生随机数

    主要是一个Java获取计算机基本信息并且在Web页面上以ExtJs4的图表展示,这里删除了ExtJs4的资源和一个算法产生验证码,因为这个算法最终使用到了产品中,所以就把这个测试的类删除了,各位不好意思了

    计算机随机数模拟随机试验教学设计.docx

    计算机随机数模拟随机试验教学设计全文共4页,当前为第1页。计算机随机数模拟随机试验教学设计全文共4页,当前为第1页。《计算机随机数模拟随机试验》教学设计 计算机随机数模拟随机试验教学设计全文共4页,当前为第...

    java 猜数游戏

    功能要求:计算机产生随机数,猜中即胜,猜不中,提示是大了还是小了,继续猜,直至猜到,给出所用时间和评语。 界面要示:用字符界面实现、

    C语言中产生随机数

    C语言中产生随机数的方法 ……rand()函数可以用来产生随机数,但是这不是真真意义上的随机数,是一个伪随机数,是根据一个数,我们可以称它为种子,为基准以某个递推公式推算出来的一系数,当这系列数很大的时候,...

    二十中matlab随机数产生方法论文的源代码

    随机数在数值计算,随机抽样等很多领域有重要作用,尤其在密码学及信息安全领域中成为一个重要的研究方向,在数字加密,密钥获取以及身份验证等方面更是重中之重。 随机数Number分为伪随机数和真随机数,现阶段的伪随机...

    意识影响随机数验证程序

    本程序是在看了影片《我们到底知道多少》之后写的,用于验证影片中提到的<意识影响随机数>这一现象。

    计算机模拟仿真概述随机数与随机变量的产生

    一、计算机仿真概述 二、随机数与随机变量的产生 三、等时间步长法 四、主导实体事件步长法. 五、事件表法 六、仿真试验设计及结果分析 七、仿真语言和软件简介

    明明的随机数

    明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤100),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。...

    产生随机数cpp代码文件

    本文件使用c++语法,可输出包含多种分布随机数的txt文件,可产生的随机数的分布包括均匀分布,泊松分布,指数分布以及正态分布

    线性同余法随机数产生算法

    随机数在概率算法中扮演着重要的作用,在现实的计算机系统无法产生真正的随机数,因此概率算法在实际中使用的随机数都是在一定程度上随机的,称为伪随机数. 线性同余法是经典的随机数产生算法,详细介绍请参照计算机算法...

    C语言学习之终止程序和用计算机生成随机数ppt.zip

    C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言学习资源C语言...

    在Java中产生随机数的两个方法

    在Java中产生随机数的两个方法,在Java中产生随机数的两个方法

    JAVA中的随机数产生和排序

    JAVA中的随机数产生和排序,老师给的一个题目,在调试中得到的,看了还是有些启发的!希望可以知道更多解决的方法,请大家指教!

    伪均匀随机数的计算机检验.docx

    伪均匀随机数的计算机检验

    Linux系统中随机数在KVM中的应用

    随机数在计算机系统中处于非常重要的地位,如果没有随机数,可能很多应用都将陷入麻烦,随机数在密码学和安全领域也是至关重要。本文主要介绍随机数的概念和重要性,Linux 系统中随机数是如何产生的,后介绍在 KVM ...

    随机数及计算机模拟 .ppt

    随机数及计算机模拟 .ppt

Global site tag (gtag.js) - Google Analytics