首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >伪随机数发生器应用中的几个问题

伪随机数发生器应用中的几个问题
EN

Cryptography用户
提问于 2018-10-20 10:14:11
回答 1查看 397关注 0票数 2

我正在尝试探索不同的方法来为我的数学项目产生伪随机数,我将非常感谢一些帮助或参考有价值的来源,因为没有背景信息很难探索这个领域。

虽然用于创建PRN的机制对我来说非常清楚,但我不理解它们是如何真正应用的。我想知道我可以用哪种算法来生成一个4位数的代码。生成这样的代码时,是否总是将生成的数字转换为位?你用什么测试来检查这些四位数的序列是否是随机的?

非常感谢你的帮助!

EN

回答 1

Cryptography用户

发布于 2018-10-20 10:34:01

在大多数情况下,运行时使用的是DRBG而不是PRNG。DRBG是一种确定性随机比特生成器,因此它向用户提供比特,而不是在特定范围内提供随机数。通常情况下,可以请求字节,然后使用最低的4位。如果一个字节的8位是随机的,那么下面的4位也必须是随机的。在大多数编程语言中,您可以通过MASKing:nibble = byte & 0x0F获得较低的4位(4位称为一小块)。

如果有一个PRNG将范围0 (包括)中的数字传递给n (排他的),那么您可以在range 0中向16请求一个数字,因为2^4=16。所请求的数字将具有设置为随机值的最低阶位。

一般来说,转换到咬口应该包括在现有的测试中。但是,如果您仍然想要执行测试,那么您可以尝试生成大约5000亿字节(是的,您正在正确地读取),并使用它创建一个250 GB的文件。然后,可以使用该文件对Dieharder测试框架进行测试。测试随机性需要大量的样本,如果您想要具有密码安全。

请注意,大多数DRBG实际上是使用操作系统进行搜索的。您必须确保DRBGs/PRNG实际传递您所追求的伪随机流的类型。

票数 2
EN
页面原文内容由Cryptography提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://crypto.stackexchange.com/questions/63287

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文