电脑随机数是如何生成的?

 我来答
flf1998
推荐于2018-03-13 · TA获得超过2405个赞
知道小有建树答主
回答量:1226
采纳率:0%
帮助的人:753万
展开全部
电脑产生的随机数称为伪随机数,是通过算法模拟的,看上去和随机数一样,实际上能算出来的数就是可以预见的数(对你来说不可预见,对电脑则是可预见),不是真正的随机数。
AiPPT
2024-09-19 广告
随着AI技术的飞速发展,如今市面上涌现了许多实用易操作的AI生成工具1、简介:AiPPT: 这款AI工具智能理解用户输入的主题,提供“AI智能生成”和“导入本地大纲”的选项,生成的PPT内容丰富多样,可自由编辑和添加元素,图表类型包括柱状图... 点击进入详情页
本回答由AiPPT提供
禾朋粟梦云
2020-09-20 · TA获得超过1142个赞
知道小有建树答主
回答量:1756
采纳率:100%
帮助的人:8.2万
展开全部
  不论是维持着你余额宝安全的加密过程还是你在玩《战地4》,电脑都会产生随机数。目前有两类随机数——“真”随机数和伪随机数——两者的区别关乎加密系统的安全度。

  对于随机数的讨论日渐升温,许多人怀疑英特尔内置于各种硬件内的随机数生成芯片是不是靠得住。要理解为什么这种随机数不太可靠,你必须理解随机数的生成原理。

  随机数的作用

  随机数的使用历史已经有数千年。无论是抛硬币还是摇色子,目的是让随机概率决定结果。电脑中的随机数生成器的目的也是如此——生成随机不可预测的结果。

  加密法要求数字不能被攻击者猜到,不能多次使用同样的数字。所以需要一种机制产生攻击者无法预测的数字,这些随机数对加密法至关重要,无论你是加密文件还是访问https协议网站,都需要用到随机数。

  真随机数

  如果电脑是靠代码生成随机数,是不是意味着随机数可以被预测?

  根据随机数的生成原理,我们把电脑随机数分为两类:“真”随机数和伪随机数。

  要生成一个“真”随机数,电脑会检测电脑外部发生的某种物理现象。比如说,电脑可以测量某个原子的放射性衰变。根据量子理论,原子衰变是随机而不可测的,所以这就是宇宙中的“纯粹”随机性。攻击者永远无法预测原子衰变的发生时间,也就不可能猜出随机值。

  举个更实际的例子,电脑会根据环境中的噪音或者采取你敲击键盘的精确时间作为随机数据或熵的生成依据。举个例子,你的电脑监测到你某天下午2点以后敲击键盘的精确时间是0.23423523秒,有足够的这些特定长数字你就能得到一个熵源,也就可以生成“真”随机数。由于人不是机器,所以攻击者无法掌握你的敲击时间。Linux中的/dev/随机设备生成随机数,“阻拦”访问直到熵积累量足够才返回一个真随机数。

  伪随机数

  伪随机数这个概念是相对于“真”随机数而言。电脑通过发送种子数值,运用算法产生某个看起来像随机数的数字,但是实际上这个数字是可以预测的。因为电脑没有从环境中收集到任何随机信息。

  虽然是伪随机数,但是并不是所有领域都不需要伪随机数。比如,如果你在玩电子游戏,那么游戏过程中是靠伪随机数还是真随机数并不重要。另一方面,如果你的应用正在加密,情况就不同了,因为你不希望攻击者能够猜到你的随机数。

  举个例子,如果攻击者掌握了某随机数生成器使用的种子数值和加密算法,如果随机数生成器完全依靠种子数值和加密算法生成密文,这个过程中不添加任何额外随机性,如果攻击者掌握的情报足够多,他们可以逆推来确定加密算法一定会用到的伪随机数,也就能破译密文。

  NSA和Intel的硬件随机数生成器

  为了帮助程序开发者更简单的生成随机数,也为了帮助生成安全的随机数,Intel的芯片组中包括一个硬件随机数生成器,名叫RdRand,这块芯片利用处理器的熵源向软件提供随机数。

  问题是这个随机数生成器是个黑盒,我们不清楚里面的工作原理。如果RdRand藏有NSA的后门,那么政府就可以破译依靠随机数生成器提供的唯一数据产生的密钥。

  这个问题非常严重。在2013年12月,FreeBSD的开发者们取消了对直接采用RdRand作为随机数源的支持,理由是无法信任Intel。RdRand设备的输出结果会用另一套加密算法增加额外熵,确保随机数服务器中即便有后门程序也不会产生影响。Linux已经这么做了,在RdRand的随机数基础上再次进行随机处理,以确保后门程序不可能从中作祟。Intel总裁Brian Krzanich在Reddit上没有直接回答关于是否装有后门的问题。

  当然这不是Intel一家的问题,FreeBSD的开发者们也点了Via芯片的名。从这场争论中我们可以看出为什么不可预测的真随机数如此重要。

  而随机数生成器生成“真”随机数只需要搜集熵或者从真实世界搜集看似随机的数据。对于某些不需要真正随机的应用,随机生成器可能会通过算法和种子数值算出随机数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
华夏联盟_天涯
保险观察员

2014-02-25 · TA获得超过1603个赞
知道大有可为答主
回答量:3148
采纳率:64%
帮助的人:952万
展开全部
您好,华夏联盟为您解答:
我看到这个回答还是比较专业的,应该能解决你的问题吧。
地址:http://zhidao.baidu.com/link?url=K2ruA77p8WfLAVIht7U3aS4ZwVDKPoZBA2unyAPqA9dPeo-m-Nq_qVehI3gi3u___5ApwaA6XL6r_kGHzY7rIq
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
ub...1@sohu.com
2018-03-13 · 超过18用户采纳过TA的回答
知道答主
回答量:125
采纳率:42%
帮助的人:19.3万
展开全部
不可能写出那样的程序.因为本来就是随即出的数字.当然不能先知道.我做这么长时间开发.没发现能这么写过
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
xingpiaoyao
2014-02-25 · TA获得超过141个赞
知道小有建树答主
回答量:377
采纳率:0%
帮助的人:222万
展开全部
有具体的针对某个软件吗?单独的电脑随机数产生机制比较多,不知道你具体问什么
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式