数字随机生成器(随机数字生成器小程序)

数字随机生成器(随机数字生成器小程序)

乍一看,电子游戏、赌博、密码学似乎彼此之间毫无关系,但实际上,它们都使用“随机数”,没有随机数就无法建立现代人的生活。本文将解释计算机如何生成这样的随机数。

生成随机数比你想象的要难得多!

例如,如果你想在编程中使用随机数,Ruby中使用诸如“rand”或Python 中使用“random()” 之类的方法。此时生成的是通过计算获得的伪随机数,而不是完全随机数。

一种称为“伪随机数生成器(PRNG)”。要使用此 PRNG 生成数字,您需要两个特定的数字,即“种子值”和“随机数生成算法”。用于PRNG的随机数生成算法包括'平方提取法','线性同余法','线性反馈移位寄存器'和'Mersenne Twister'。

PRNG不能生成完美的随机数,但它可以快速且廉价地生成看似随机数。此外,如果制备特定的种子值,可以获得再现性,因此测试操作也是一个很大的问题。这就是为什么PRNG经常用于游戏和编程语言中的随机方法。

但是,由于 PRNG 生成的数字的随机性取决于种子值,因此还存在一个漏洞,即如果种子值泄露,可以预测数字的生成。实际上,卡巴斯基实验室(一种安全软件)中有一个密码管理器示例,它在获取种子值时遇到问题,并使随机生成的密码可预测。

数字随机生成器(随机数字生成器小程序)

另一种就是“固有随机数生成器(TRNG)”随机生成作为随机数源的数据。TRNG的特征是使用熵而不是种子值,种子值是一个特定的数字,可以生成更接近完美的随机数。因此,TRNG用于数字赌博领域,如骰子,洗牌和轮盘赌。

问题是如何使用熵作为随机数源的数据,这要求构成计算机的部分是随机的。TRNG通过使用诸如存储器波动性和光电效应等量子现象,将物理噪声转换为数字1和0来产生高度随机的数字。

数字随机生成器(随机数字生成器小程序)

另一方面,TRNG的缺点是生成数字需要时间。此外,作为随机数源的数据需要熵,因此空闲或新服务器无法创建与活动服务器一样随机的数据。

由于PRNG和TRNG各有其弱点,因此可以在视频游戏或赌博中毫无问题地使用,但不能用于密码学领域,这需要很高的安全性,同时也需要速度。

因此设计了“加密伪随机”数字生成器(CSPRNG),它实现了PRNG的速度和TRNG的安全性。

CSPRNG是一个生成器,它从“高质量的熵源创建种子值,并将其输入到算法中以生成高度安全的随机数”。简而言之,CSPRNG是一种“使用TRNG生成PRNG种子值”的机制。/ Dev / random 在类Unix操作系统中使用,Linux使用这个CSPRNG。

下次,当你玩视频游戏,随机播放音乐或在编程中拨打随机号码时,也许你可以想一想计算机中发生了什么。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2022年9月2日 16:58
下一篇 2022年9月2日 17:01

相关推荐

发表回复

登录后才能评论